今天,如果我们使用 Maven 构建,则 jar 名称为 ${project.artifactId}-${project.version}。在本地存储库中,结构如下:
-\.m2
---\repository
-----\com
-------\someproject
---------\1.0
-----------\someproject-1.0.jar
我想知道路径已经准确地告诉了版本,为什么 jar 名称应该这样命名。有没有什么方法可以删除存储库中 jar 名称中的版本信息?我尝试过,但将 jar 复制到存储库时不起作用。
我搜了一下这个问题,发现很多类似的问题。看起来打包成war或者ear都还可以,jar呢?几年前有些人回答不可能,所以我想知道今天是否有人有解决方案。
我更喜欢: -.m2 ---\存储库 -----\com --------\某个项目 ---------\1.0 -----------\someproject.jar
最佳答案
maven 约定将 Artifact 命名为 <artifact>-<version>.jar
。虽然在文件夹和 Artifact 中包含版本号似乎有些多余,但这样做是有原因的。
它存储在存储库中具有版本号的文件夹中的原因是因为还可能存在与该 Artifact 关联的其他文件(源、pom 等)。
将版本号附加到 Artifact 上对于应用程序的分发也是有意义的。当库与您的应用程序打包时,了解打包了哪些版本的依赖项非常有用,而无需查看 pom(查看依赖项图时也是如此)。
即使您可以使 Artifact 名称不附加版本号,也不推荐这样做,因为我确信有些东西会破坏,因为它们依赖于这些 Maven 约定(maven 更多的是关于约定优于配置) )。
关于java - 如何从 Maven 存储库中的 jar 中删除版本信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618991/