我正在尝试设置版本号并在Maven中构建项目,但该工件似乎是旧版本,即使在此过程中成功设置了版本号。命令是:
versions:set -DnewVersion=1.0.1 clean compile package -Dmaven.test.skip=true -U
输出开始如下:
[INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building MyLibraries 1.0.0 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- versions-maven-plugin:2.1:set (default-cli) @ SharedLibraries --- [INFO] Searching for local aggregator root... [INFO] Local aggregation root: C:\Documents and Settings\user\My Documents\workspaces\MyWorkspace\MyProjectRoot [INFO] Processing com.mycompanies:MyLibraries [INFO] Updating project com.myCompany:MyLibraries [INFO] from version 1.0.0 to 1.0.1 Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} [INFO] [INFO] Processing com.myCompany:Assembly [INFO] Updating parent com.myCompany:MyLibraries [INFO] from version 1.0.0 to 1.0.1
但后来:
[INFO] ------------------------------------------------------------------------ [INFO] Building MyLibraries 1.0.0 [INFO] ------------------------------------------------------------------------
最终jar的版本号是1.0.0。
是否可以在一个命令中更新版本并构建项目,或者我是否需要两个命令:一个用于更新版本而另一个用于构建?
我在RAD(基于Eclipse平台)中这样做,所以如果可能的话,我宁愿避免为两次运行配置点击两次。
答案 0 :(得分:3)
在这种情况下,您遇到的问题是,如果您调用mvn versions:set ... clean package
,则pom文件已被加载到内存(reactor)中,稍后将在程序包生命周期中使用,但调用目标是versions-maven-plugin你正在改变硬盘上的pom文件。换句话说,你需要有不同的要求才能成功。
mvn versions:set -DnewVersion=1.0.1
mvn clean package