我们在POM中指定versionId,相应的maven生成foo-version.jar。例如:foo-1.0-SNAPSHOT.jar。maven build - 版本信息
是否有可能使用maven做以下事情?
- 未在POM中指定versionId,但从命令行指定了构建版本。这将有助于不对POM中的版本进行“硬编码”并对每个版本进行更改,而是通过超级构建脚本进行指定。在POM
我们在POM中指定versionId,相应的maven生成foo-version.jar。例如:foo-1.0-SNAPSHOT.jar。maven build - 版本信息
是否有可能使用maven做以下事情?
设置的项目版本作为占位符
<groupId>test</groupId>
<artifactId>x</artifactId>
<version>${project.version}</version>
现在你可以从命令行传递版本
mvn -Dproject.version=1.1.1 package
我尝试过在Maven 2的旧版本中,iirc这种方法不起作用。生成的POM生成不可用。 (我希望现在已经有所改进)。这就是为什么我需要编写一个脚本来执行POM的版本更改的原因。 –
这个工作正常,但生成/安装的POM也有'
你可以使用maven release plugin。
release:update-versions -DautoVersionSubmodules=true
,如果你想为每个模块相同的版本,你需要autoVersionSubmodules。否则你需要指定每个版本。
这只会增加您的当前版本,如果你想有一个特定版本添加-DdevelopmentVersion=your version
到命令
UPDATE 我发现了另一个插件做的伎俩。 The maven versions plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.1</version>
</plugin>
使用此命令可以设置版本: versions:set -DnewVersion=your version
当我尝试第一个选项,我得到这个错误:'[错误]无法执行目标org.apache.maven.plugins:maven-release-plugin:2.3.2:项目简单的更新版本(默认 - cli) :缺少必需的设置:必须指定scm连接或developerConnection。 - > [帮助1]'。第二个选项更新*版本后的版本*!无论如何,这个想法是保持版本不在POM中,因为POM被签入到CM中,我们不想为每个版本提交文件。 – gammay
然后你需要添加scm标签到你的pom,[这里是](http://maven.apache.org/scm/maven-scm-plugin/usage.html)它的一个例子 – mokuril
更改发布应发布的插件,而不是手动完成。 – khmarbaise
如果您的软件具有特定的二进制版本,您将如何知道使用哪个版本的源代码来构建它? – artbristol