2014-01-17 33 views
0

在非tycho版本期間,Maven將檢查正在構建的項目中是否存在快照依賴關係。如何確保tycho版本不包含快照依賴

有沒有一種方法可以用Tycho構建的E4項目做同樣的事情?

+1

Maven如何檢查此問題?你可以在Tycho構建中執行相同的目標嗎? – oberlies

+0

Maven在發佈插件中檢查了這一點,該插件不能用於tycho builds afaik。 –

回答

1

p2存儲庫沒有(正式的)快照和非快照構件的概念。因此,從技術上講,只要您不通過pomDependencies=consider從Maven存儲庫使用SNAPSHOT工件,就不會在Tycho構建中擁有快照依賴關係。後者可以用與Maven相同的方式阻止,即通過在settings.xml中控制Maven庫(參見例如this other answer)。

但可能這不是你要找的。您可能希望確保不引用最終會消失的構件,並使構建不可重現。爲此,您必須檢查引用的p2存儲庫的保留策略,並確保您僅引用永久保留的p2存儲庫。 (例如:Retention policy of the Eclipse project p2 repositories

如果保留策略不夠好(或者您不信任提供者實際堅持),則需要存儲引用的p2存儲庫的副本。例如,您可以將zip存儲庫下載爲zip(或者鏡像存儲庫並自行壓縮),然後將其部署到Nexus OSS,並通過Unzip Plugin從您的版本訪問它。 (免責聲明:Unzip插件是Tycho項目的一個產品,我是其中一個提交者。)

+0

感謝您的回答。我的項目中的許多模塊都包含依賴項,這些依賴項存儲在模塊文件夾的「lib」目錄中,並在plugin.xml編輯器的「runtime/classpath」部分中引用。我想阻止包含這些依賴關係的快照。那些不是Eclipse插件。也許我以不正確的方式包括他們? –

+1

這聽起來像庫來自Maven,所以您應該考慮防止Maven在構建中使用SNAPSHOT構件。正確的'settings.xml'配置應該爲你解決這個問題。 – oberlies

+0

這些是使用Maven構建的,但未在Maven的Eclipse應用程序中導入。它們是使用eclipse中的plugin.xml編輯器手動添加的。當有人開發這些代碼時,我想使用快照,但是我希望在發佈時檢查以確保這些代碼在我的Manifests或build.properties中都沒有引用。 –

0

看一看的Maven Settings References

的版本中,快照:這些是每種類型的神器,發佈或快照的政策。有了這兩套,POM就有能力在單個存儲庫內改變每種類型的策略,使其獨立於另一種。例如,可能決定僅啓用快照下載,可能用於開發目的。 啓用:對於是否爲相應類型(發行版或快照)啓用此存儲庫是true或false。 updatePolicy:此元素指定更新嘗試發生的頻率。 Maven會將本地POM的時間戳(存儲在存儲庫的maven-metadata文件中)與遠程進行比較。選項包括:always,daily(默認),interval:X(其中X是以分鐘爲單位的整數)或從不。 checksumPolicy:當Maven將文件部署到資源庫時,它也會部署相應的校驗和文件。您的選擇是忽略,失敗或警告丟失或不正確的校驗和。 佈局:在上面的知識庫描述中,有人提到它們都遵循共同的佈局。這大多是正確的。 Maven 2有一個默認的倉庫佈局;然而,Maven 1.x有不同的佈局。使用這個元素來指定它是默認的還是遺留的。

我認爲你以後的設置可能接近以下內容。

<repository> 
    <id>my-repo</id> 
    <name>My Repo</name> 
    <url>http://my.repo.org</url> 
    <snapshots> 
     <enabled>false</enabled> 
     <updatePolicy>never</updatePolicy> 
    </snapshots> 
</repository> 
+0

這在一個典型的maven構建中是正確的,在這個構建中,依賴關係被添加到pom.xml文件中。在Tycho構建中,依賴項位於MANIFEST.MF文件中,由Eclipse和RCP框架維護。 –