如何向Maven提供屬性並強制它實際替換它們在pom.xml文件中?例如。我有一個「模板」pom.xml,我用它來部署軟件包和一些依賴項。我想要artifactId
,version
和其他變量被替換,並且產生的pom.xml
被上傳。替換pom.xml中的參數
使用命令行參數不起作用,例如mvn clean deploy -DartifactId=someArtifact
會將jar上傳到正確的位置,但上傳的pom.xml
包含佔位符變量而不是其實際值。
具體的例子:
的POM文件中包含依賴這個定義:
<dependencies>
<dependency>
<groupId>com.avast.melka</groupId>
<artifactId>${runtimeId}</artifactId>
<version>${runtimeVersion}</version>
</dependency>
</dependencies>
而且我想Maven來部署相應的包含類似POM:
<dependencies>
<dependency>
<groupId>com.avast.melka</groupId>
<artifactId>actualIdValue</artifactId>
<version>1.0.42</version>
</dependency>
</dependencies>
如何我要這樣做嗎?我能找到的最接近的是http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html - 但是這涉及替換資源文件中的值,而不是POM,對我來說,它好像是一個不同的用例。
我不認爲有一個簡單的方法來做到這一點。 'maven-release-plugin'爲版本做了類似的事情......我想你可以根據它的作用創建你自己的插件。 – Tunaki
爲什麼您需要pom文件的模板才能部署工件?爲什麼不創建它們並使用它呢?爲什麼不通過'mvn deploy'使用maven構建? – khmarbaise
我想在通用的CI構建作業中自動使用它,可以由我公司的不同團隊實例化並自定義生成不同GAVC和依賴關係的Maven JAR。而不是每個團隊都必須手動創建他們自己的POM.xml,我想讓他們在實例化時只定制構建作業參數。除此之外,即使所有的變量都是「設置爲石頭」,我仍然需要提供build版本(第三個數字對應於內部版本號)。 –