2016-09-07 33 views
1

考慮在內我有用Maven編譯的Java項目。每個項目都有自己的POM看起來像下面這樣:Maven SNAPSHOT將作爲RELEASE

<project ...> 
    <groupId>group.id</groupId> 
    <artifactId>scripts</artifactId> 
    <version>1.0.1-SNAPSHOT</version> 
    ... 
    <dependencies> 
      <dependency> 
       <groupId>global</groupId> 
       <artifactId>common</artifactId> 
       <version>10.2.3-SNAPSHOT</version> 
      </dependency> 
    </dependencies> 
    ... 
</project> 

快照作爲釋放

如果我做了mvn install,它會編譯/安裝它,我第一次執行命令。 下一次,它不會安裝它。它接縫,maven認爲它是一個RELEASE,它不是SNAPSHOT。 我可以看到包含在已安裝軟件包中的時間戳。如果我不更改版本號,則時間戳也不會更改。

我相信我錯過了maven配置,但是這會影響我們的發展,因爲我們正在爲每個測試部署強制更改項目版本(及其依賴關係)。

說明: 我使用的是maven 3.3.3。看起來我在3.1.0中沒有這種行爲(我不是100%肯定舊版本,反正老了)。 Maven與Nexus結合在一起。也許問題來自於它,我專注於錯誤的馬。

謝謝你的提示。

編輯: 的問題是: 我怎樣才能得到行家只喜歡RELEASE安裝快照每次而不是第一次?

編輯解決

我們一直在做mvn install編譯和安裝來源。出於某種原因,我們還沒有使用mvn clean命令。 重新編譯所有源的正確的maven命令是mvn clean install

謝謝@VinayVeluri

+0

有很多很好的信息在這裏,但什麼是你的問題? – byxor

+0

可能的重複http://stackoverflow.com/questions/2358965/maven-automatic-snapshot-update。回答'mvn -U,--update-snapshots 強制檢查遠程存儲庫上的更新版本和快照'在這種情況下可能會對你有幫助 – Xantier

+0

你在看這個? 'target'文件夾還是'.m2-> repo'?安裝發佈回購,但它每次都這樣做 – VinayVeluri

回答

0

如果需要的代碼修改版本,請自己版本的代碼庫,儘管它是累贅給人版本的想法。

如果是自動有關快照更新,然後使用

mvn -u clean install 

添加完畢後,此命令行參數勢力的Maven檢查所有快照遠程倉庫中,並更新你的本地倉庫,如果它是過時。

source

+1

與此同時,我們深入研究了這個問題,並找到了非常簡單的完全相同的解決方案。這真是太神奇了,看起來很愚蠢,因爲如此簡單的解決方案...... 我們從來沒有在'install'之前做過任何'clean',於是maven就沒有重新編譯源代碼。 謝謝你的回答。 –