2017-06-14 41 views
3

我有一個Nexus 3,我使用「mvn deploy」從Jenkins部署了一些工件。我有很多模塊500+。構建看起來有點像這樣:如何讓maven-metadata.xml與使用maven部署的工件具有相同的時間戳?

mvn clean package -DskipTests -DskipITs -T C1 

mvn install -DskipTests -DskipITs -T C1 

mvn deploy --quiet -DskipTests -DskipITs -Dmaven.validate.skip=true -Dmaven.compile.skip=true -Dmaven.test.skip=true -Dmaven.package.skip=true -Dmaven.integration-test.skip=true -Dmaven.verify.skip=true -T C1 

的問題是,不時我的器物有一個時間戳,而元數據有不同的時間戳。通常差1秒。

這是我在承上啓下看到https://mynexus.com/repository/snapshots/com/company/my-artifact/1.0.0-SNAPSHOT/maven-metadata.xml

<?xml version="1.0" encoding="UTF-8"?> 
<metadata modelVersion="1.1.0"> 
    <groupId>com.company</groupId> 
    <artifactId>my-artifact</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <versioning> 
    <snapshot> 
     <timestamp>20170613.140447</timestamp> 
     <buildNumber>1</buildNumber> 
    </snapshot> 
    <lastUpdated>20170613140447</lastUpdated> 
    <snapshotVersions> 
     <snapshotVersion> 
     <extension>war</extension> 
     <value>1.0.0-20170613.140447-1</value> 
     <updated>20170613140447</updated> 
     </snapshotVersion> 
     <snapshotVersion> 
     <extension>pom</extension> 
     <value>1.0.0-20170613.140447-1</value> 
     <updated>20170613140447</updated> 
     </snapshotVersion> 
    </snapshotVersions> 
    </versioning> 
</metadata> 

來看行家-metadata.xml中,神器URL應該是這樣的:

https://mynexus.com/repository/snapshots/com/company/my-artifact/1.0.0-SNAPSHOT/my-artifact/1.0.0-20170613.140447-1.war

但事實並非如此。相反,僞影是在此位置:

https://mynexus.com/repository/snapshots/com/company/my-artifact/1.0.0-SNAPSHOT/my-artifact/1.0.0-20170613.140446-1.war

MVN --version OpenJDK的64位服務器VM 的Apache的Maven 3.5.0(ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T21:39:06 + 02: 00) Maven home:/ usr/local/apache-maven Java版本:1.8.0_131,供應商:Oracle Corporation Java主頁:/ usr/lib/jvm/java-8-openjdk-amd64/jre 默認語言環境: en_US,平臺編碼:UTF-8 操作系統名稱:「linux」,版本:「4.4.0-64-generic」,arch:「amd64」,系列:「unix」

maven-deploy-plugin的版本是2.8.2

我在做什麼錯了?我怎樣才能解決這個問題? 謝謝!

+1

你真的在運行那些給定步驟嗎?這可以簡化爲'mvn clean deploy -DskipTests -DskipITs -T C1'因爲安裝部分是作爲生命週期的一部分完成的?除此之外,我真的不明白你的問題? – khmarbaise

+0

我的構建需要永遠。我們有主詹金斯和奴隸詹金斯。包裝階段可以在任何機器上並行安全地完成。如果兩個作業在同一臺機器上並行運行安裝步驟,他們會搞亂〜/ .m2/repository元數據,因此我們使用jenkins鎖定。部署步驟可以並行完成,但需要很長時間,因此我們將其作爲單獨步驟來減少安裝所需的鎖定時間。如果我們有乾淨的部署,我們或者搞砸了本地maven元數據,或者我們把鎖放在比需要更多的時間。 – ddreian

+1

首先,不要使用本地緩存('〜/ .m2/repository')和不同的maven版本,這些版本不會工作,也不會爲它設計。每個作業都必須有自己的緩存才能運行。而且,「永遠」意味着什麼?多少分鐘,幾小時?多少個模塊?多少次測試? – khmarbaise

回答

3

這是Maven 3.5.0中的一個錯誤,當3.5.1發佈時,它將被解析。

最初的bug報告導致部署插件(https://issues.apache.org/jira/browse/MDEPLOY-221),但是它是maven核心的問題:https://issues.apache.org/jira/browse/MNG-6240

我在我的工作中遇到了同樣的問題,在mavens問題跟蹤器上進行了一些挖掘和搜索之後,我找到了上述鏈接。我會建議在等待3.5.1出來時降級。

+0

它的工作!謝謝!暫時降級是一個很好的解決方案! – ddreian

相關問題