【发布时间】:2012-08-06 19:03:25
【问题描述】:
我正在处理一种情况,我们在 POM 中使用 LATEST 和 RELEASE 关键字来处理某个依赖项(依赖项和项目都归我们所有,所以我们控制什么是 LATEST 和 RELEASE...我们一次只支持一个版本)。使用这些关键字可以让我们最大限度地减少发布后所需的维护。
在构建过程中有一个步骤必须从解压缩的依赖项中复制 DLL,但由于我们没有指定特定版本,因此我们将解压缩的依赖项的版本号硬编码,并且必须在每次发布后更新它.有没有办法在运行时从 Maven 属性获取此依赖项的版本?
maven-dependency-plugin (http://maven.apache.org/plugins/maven-dependency-plugin/index.html) 的属性目标获取工件在本地存储库中的位置(不是我在找什么)。 depends-maven-plugin(显示在这里:http://team.ops4j.org/wiki/display/paxexam/Pax+Exam+-+Tutorial+1)可以生成一个包含各种依赖项及其版本的文件,但使用它需要一个进程读取文件并利用该信息。我想知道是否有更多“Maven方式”,例如访问依赖版本的属性。
编辑:为了澄清,我们需要版本号,这样我们就可以进入解压后的依赖目录来复制文件。
【问题讨论】:
-
这可能会有所帮助...根据this,您可以使用以下方法引用本地存储库中 jar 的路径:${maven.dependency.com.foo.Bar.jar.path}
-
如果你创建一个由从外部注入的属性定义的依赖项,你的构建将无法重现,这将无法工作。
-
@khmarbaise 使用 SNAPSHOT 并没有帮助,因为版本号本身会随着版本的不同而变化。所描述问题的范围超出了特定版本的开发范围。我也意识到使用 LATEST 和 RELEASE 会使以前的构建无法重现,但我们只支持我们项目的最新发布版本。它是一个用于网站的内部库,因此我们不会使用多个版本。使用 LATEST 和 RELEASE 关键字可以减少手动维护(我们经常发布)。不过,感谢您的建议。
-
@BenjaminLinus 感谢您的建议,但我们需要访问解压后的工件……Maven 为我们做的。我们只是没有 Maven 中可用的解压工件的完整路径,因为我们使用 LATEST 和 RELEASE 作为版本。