我有一個相對較大的具有模塊依賴關係鏈的maven項目,我試圖通過Jenkins自動完成構建過程,該過程使用版本號上傳模塊jar文件。在這樣做的時候,如果沒有爲命令行maven調用指定參數,我仍然希望模塊具有默認的版本號(默認爲0.0.0.dev)。具有相同版本號的Maven依賴關係鏈
我第一次嘗試<version>0.0.0.dev</version>
確定我可以用maven命令行覆蓋此值。事實證明,情況並非如此:http://jira.codehaus.org/browse/MINSTALL-30。有一條評論引導我進行下一次嘗試:<version>${build.number}</version>
,我會將內部版本號傳遞給命令行。顯然,因爲該屬性沒有設置在其他地方,如果沒有構建編號提供,我會得到諸如module.name - $ {build.number} .jar之類的jar。簡單修復:如評論建議,添加<properties><build.number>0.0.0.dev</build.number></properties>
。
當我嘗試將該版本傳播到模塊依賴關係時,會導致傳遞性問題。假設我有moduleA取決於moduleB取決於moduleC,我要求每個有相同的版本號。依賴的例子:在moduleA的POM文件:
<dependency>
<groupId>groupID</groupId>
<artifactId>moduleB</artifactId>
<version>${version}</version>
</dependency>
運行mvn compile –Dbuild.number=9.9.9.9
上moduleA:它會尋找moduleB-9.9.9.9.jar,但它會尋找moduleC-0.0.0.dev.jar。這是因爲build.number屬性不是可傳遞的(不像實際的版本號)。
我的問題:我如何獲得所需的行爲?由於沒有在命令行上傳遞額外的參數,因此使用默認版本號構建一個jar,但允許以該模塊針對具有相同版本的其他模塊的方式覆蓋該默認值。
模塊和依賴在Maven中有非常明確的含義。命令行***上的屬性將傳播***到當前反應堆中正在構建的所有模塊。 'moduleB'是'ModuleA'的依賴項和模塊還是隻是依賴項? – Dev