【问题标题】:Set new version number and build all at once in Maven设置新版本号并在 Maven 中一次构建
【发布时间】:2013-11-03 17:26:00
【问题描述】:

我正在尝试设置版本号并在 Maven 中构建项目,但工件似乎是旧版本,即使在此过程中已成功设置版本号。命令是:

versions:set -DnewVersion=1.0.1 clean compile package -Dmaven.test.skip=true -U

输出开始如下:

[信息] [信息] --------------------------------------------- ------------------------- [信息] 构建我的图书馆 1.0.0 [信息] --------------------------------------------- ------------------------- [信息] [INFO] --- 版本-maven-plugin:2.1:set (default-cli) @ SharedLibraries --- [INFO] 正在搜索本地聚合器根... [INFO] 本地聚合根目录:C:\Documents and Settings\user\My Documents\workspaces\MyWorkspace\MyProjectRoot [INFO] 处理 com.mycompanies:MyLibraries [INFO] 更新项目 com.myCompany:MyLibraries [信息] 从版本 1.0.0 到 1.0.1 道具:{project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 道具:{project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 道具:{project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 道具:{project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} [信息] [INFO] 处理 com.myCompany:Assembly [INFO] 更新父 com.myCompany:MyLibraries [信息] 从版本 1.0.0 到 1.0.1

但后来:

[信息] --------------------------------------------- ------------------------- [信息] 构建我的图书馆 1.0.0 [信息] --------------------------------------------- -------------------------

最终jar的版本号是1.0.0。

是否可以在一个命令中更新版本和构建项目,还是我需要两个命令:一个用于更新版本,另一个用于构建?

我在 RAD 中执行此操作(基于 Eclipse 平台),因此如果可能,我宁愿避免单击两次以获得两个运行配置。

【问题讨论】:

  • 发布后不使用发布插件更新版本有什么原因吗?
  • @khmarbaise:我们还没有将 Maven 与源代码控制连接起来——发布插件是否可以在不需要连接到源代码控制的情况下做我想做的事情?

标签: java eclipse maven


【解决方案1】:

在这种情况下您面临的问题是,如果您调用mvn versions:set ... clean package,则 pom 文件已加载到内存(反应器)中,稍后将由包生命周期使用,但调用版本的目标 - maven-plugin 您正在更改硬盘上的 pom 文件。所以换句话说,你需要有不同的调用才能成功。

mvn versions:set -DnewVersion=1.0.1
mvn clean package

【讨论】:

  • 这就是我害怕的。我试过versions:set -DnewVersion=1.0.1 ; clean compile package -Dmaven.test.skip=true -U,但后来maven抱怨;不是一个有效的目标。
  • 也许你的意思是mvn versions:set -DnewVersion=1.0.1 ; mvn clean compile package -Dmaven.test.skip=true -U?不过请注意,这是否可行取决于您使用的控制台 - 标准 Windows 控制台不会执行您想要的操作,但 bash 之类的会。
  • @blalasaadri:我正在运行它 Eclipse 运行配置,所以我实际上不需要输入 mvn
  • 我不知道在 eclipse 中从一个运行配置运行连续 maven 作业的任何可能性,这似乎是您所需要的。一种解决方案可能是有两个单独的运行配置......不是很漂亮,但只要你想使用 eclipse 进行构建,我能想到的最好的。
  • @blalasaadri:我想另一种选择是有一个批处理脚本,它对 maven 进行两次调用,一个运行配置来运行批处理脚本...:/
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 2013-05-23
  • 2014-11-05
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
相关资源
最近更新 更多