【问题标题】:how to remove version info from jar in maven repo [duplicate]如何从maven repo中的jar中删除版本信息[重复]
【发布时间】:2014-03-03 00:58:56
【问题描述】:

今天,如果我们使用 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 存储库的,另一个是关于 EAR 程序集的。

标签: java maven


【解决方案1】:

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

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

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

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

【讨论】:

  • +1 可以很好地解释为什么会这样
  • 感谢您的友好解释。我想做这样的事情的原因如下: 1. jar 名称会太长添加版本信息 2. 如果其他人使用我们构建的 jar,名称看起来不太好。 ps:我们的罐子好像只有一个版本...
  • 那么只需使用Maven assembly plugin 以您想要的任何方式组合文件...
  • 实际回答问题的更简单的解决方案——在 pom.xml 的构建部分中使用 finalName 属性。 ${project.artifactId}
猜你喜欢
  • 2016-10-16
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2015-01-06
  • 2013-07-13
  • 1970-01-01
  • 2014-10-09
  • 2015-10-02
相关资源
最近更新 更多