【发布时间】:2018-03-09 19:19:28
【问题描述】:
我正在尝试编写make 配方以将 jar 名称从包版本更改为 git 提交。
COMMIT := $(shell git log -1 --format=%h)
MVN_VERSION := $(shell mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive exec:exec)
jar:
mvn package assembly:single
rename:
@echo $(MVN_VERSION)
@echo $(COMMIT)
mv target/myjar-$(MVN_VERSION).jar target/myjar-$(COMMIT).jar
我知道相应的 shell 命令(来自this answer 的 Maven)在 bash 中独立工作,但是当我运行时,变量中没有存储任何内容。
> make rename
4cbee79
mv target/myjar-.jar target/myjar-4cbee79.jar
mv: rename target/myjar-.jar to target/myjar-4cbee79.jar: No such file or directory
【问题讨论】:
-
我会将项目的版本更改为 git sha,这可以通过使用 maven.apache.org/maven-ci-friendly.html 或多或少轻松实现(至少需要 Maven 3.5.X),此外,你为什么打电话给
assembly:single而不是以您可以简单地调用mvn package的方式配置程序集插件? -
简短的回答是我是 Maven 新手。感谢您的提示,它们帮助很大。
-
在 Maven 项目中,makefile 很少是正确的解决方案。如果可能的话,您弄清楚如何更改适当插件的配置,以便您可以留在 Maven 生命周期中。