【发布时间】:2017-03-31 23:57:48
【问题描述】:
我尝试在工件名称中包含 git commit 哈希以区分 CI 场景中的快照版本。 git 哈希已成功包含在我的项目的 target/ 文件夹中,但在最后一个 maven 步骤中,它将工件复制到我的 HOME/.m2/repositories 文件夹中并将名称更改为 ARTIFACTID-VERSION-mta.jar。
如何保留包含提交哈希的目标/文件夹中的文件名?
我查看了 maven-install-plugin,但找不到“finalName”属性或类似的东西。
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ projectname ---
[INFO] Installing PROJECTDIR/pom.xml to ~/.m2/repository/GroupIdDir/projectname/1.0.1/projectname-1.0.1.pom
[INFO] Installing PROJECTDIR/target/projectname-1.0.1-d054c42-mta.jar to ~/.m2/repository/GroupIdDir/projectname/1.0.1/projectname-1.0.1-mta.jar
我希望最后一行是
[INFO] Installing PROJECTDIR/target/projectname-1.0.1-d054c42-mta.jar to ~/.m2/repository/GroupIdDir/projectname/1.0.1/projectname-1.0.1-d054c42-mta.jar
Controlling maven final name of jar artifact 没有解决问题,因为它修改了输出文件夹。
【问题讨论】:
-
你不能那样做。本地存储库中的名称遵循
artifacId-version(-classifier).type约定,您无法更改它。见stackoverflow.com/questions/17024803/version-in-jar-name -
我可以将提交哈希设置为分类器吗?
-
你可以 但这确实意味着每次有新的提交时它的 Maven 坐标都会改变,所以每个依赖它的项目都需要改变
<dependency>声明 对于每个提交。请参阅stackoverflow.com/questions/8354201/…。听起来您正在尝试从头开始重建 Maven 的 SNAPSHOT 机制。为什么不对你的项目1.0.1-SNAPSHOT进行版本控制? -
我想知道一旦工件被部署到其他地方,哪个提交导致了工件的快照版本或发布版本。如果有错误,应该很容易从已部署的工件中获取相关提交。
-
那么不要在文件名中添加这个信息。对于这个用例,这通常被添加到另一个文件的清单中。对于 Git,请参阅 github.com/ktoso/maven-git-commit-id-plugin 或 stackoverflow.com/questions/31510244/…
标签: maven continuous-integration maven-install-plugin