我知道的最簡單的解決方案是使用一個屬性的版本,而不是文字將它們定義到pom文件中。這是從Maven 3.5.0可用。
你可以這樣說:
<project ...>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>18</version>
</parent>
<groupId>org.apache.maven.ci</groupId>
<artifactId>ci-parent</artifactId>
<name>First CI Friendly</name>
<version>${revision}</version>
...
</project>
現在,您可以通過構建它:
mvn -Drevision=1.2.0-SNAPSHOT clean package
但是,這將意味着在每次通過命令行是調用Maven的時間定義修訂有點麻煩。因此,您可以通過.mvn/maven.config
文件使用該解決方案,其中包含:
-Drevision = 1.2。0-快照
可以Maven的中定義的屬性POM本身是這樣的:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>18</version>
</parent>
<groupId>org.apache.maven.ci</groupId>
<artifactId>ci-parent</artifactId>
<name>First CI Friendly</name>
<version>${revision}</version>
...
<properties>
<revision>1.0.0-SNAPSHOT</revision>
</properties>
</project>
這意味着你必須只在該版本定義,而不是在每個模塊等單一位置
多模塊的設置工作也是這樣,其中一個以上父母的孩子看起來是這樣的:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.maven.ci</groupId>
<artifactId>ci-parent</artifactId>
<version>${revision}</version>
</parent>
<groupId>org.apache.maven.ci</groupId>
<artifactId>ci-child</artifactId>
...
</project>
但要注意,你必須使用flatten-maven-plugin在您喜歡deploy such artifacts to a repository或只想做mvn install
的情況下。這需要看起來像這樣:
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>18</version>
</parent>
<groupId>org.apache.maven.ci</groupId>
<artifactId>ci-parent</artifactId>
<name>First CI Friendly</name>
<version>${revision}</version>
...
<properties>
<revision>1.0.0-SNAPSHOT</revision>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<updatePomFile>true</updatePomFile>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<modules>
<module>child1</module>
..
</modules>
</project>
這意味着你只在你的項目的版本被界定,應該減少這種急劇合併問題一行結束。
請仔細閱讀文檔!
請僅使用${revision}
,${changelist}
或${sha1}
目前不支持其他屬性。
你是唯一一個在「開發」分支上工作的人嗎? –