0

今天,如果我们使用 Maven 构建,jar 名称是 ${project.artifactId}-${project.version}。在本地存储库中,结构如下:

-\.m2
---\repository
-----\com
-------\someproject
---------\1.0
-----------\someproject-1.0.jar

我想知道路径已经准确地说明了版本,为什么 jar 名称应该这样命名。是否有任何方法可以删除存储库中 jar 名称中的版本信息?我尝试了,但是将 jar 复制到存储库时它不起作用。

我搜索了这个问题,发现了很多类似的问题。打包成war或者ear好像没问题,jar呢?几年前有些人回答不可能,所以我想知道今天是否有一些解决方案。

我更喜欢:-.m2 ---\repository -----\com -------\someproject ---------\1.0 -----------\一些项目.jar

4

1 回答 1

4

maven 约定是为工件命名<artifact>-<version>.jar。虽然在文件夹和工件中包含版本号似乎是多余的,但这是有原因的。

它存储在存储库中具有版本号的文件夹中的原因是因为可能还有其他文件与工件相关联(源、pom 等)。

将版本号附加到工件以及分发应用程序也很有意义。当这些库与您的应用程序一起打包时,无需查看 pom 就知道打包了哪些版本的依赖项很有用(查看依赖关系图时也是如此)。

即使您可以使工件名称没有附加版本号,也不建议这样做,因为我确信有些事情会因为它们依赖于这些 maven 约定而中断(maven 更多的是关于配置的约定)。

于 2012-11-29T04:57:59.827 回答