2

對於包含大量Maven構件(內部生成以及外部構件)的項目,作爲整個產品發佈的一部分,如何自動化內部控制工件的發佈。自動化Maven工件發佈

要注意這個問題,我們使用Jenkins和Maven發佈插件。因此釋放單個工件的操作是自動的(儘管啓動該過程的操作是手動的)。然而,在發佈的過程中釋放所有變化的人造物的過程不是自動的(即,必須手動啓動每個人造物的發佈)。部分問題是,直到發佈結束之前幾乎沒有任何內容被釋放,在此之前,所有內容都保留在SHAPSHOT中。我們擁有數量龐大的組件以及衆多的應用程序/服務(超過30個),這些應用程序/服務依賴於大量的組件。因此,不僅僅是挑選組件和發佈的情況,還有必須遵循的發佈依賴層次結構(即,從底部開始發佈不使用其他組件的組件,然後繼續工作,直到所有應用程序/服務發佈)。

值得注意的是,我們使用了兩個常見的父級poms,這些父級poms在很大程度上控制了外部工件依賴和內部組件依賴的版本。組件和應用程序的一些pom文件可能會覆蓋這個,但這是(或應該是)一個例外,應該是一個好的但暫時的理由。因此,當內部工件被釋放時,相應的父依賴關係pom中的版本也應該被更新。

該產品有一個版本號(當然),但各種pom文件在技術上不共享此版本號。雖然這不是真的,但是當部分軟件設置爲報廢時,它們將不會在將來更新,因此,目前有限數量的工件版本與產品的版本相匹配,但這最終不會是這樣。

有關如何使這個過程自動化的任何想法將不勝感激。此外,如果您覺得我所描述的內容似乎是管理軟件的一種瘋狂方式,那麼請提供評論。謝謝。

+0

你有多少內部依賴關係?我的公司有類似的問題,但我看不到任何神奇的解決方案。當我們需要發佈一個依賴於它的項目時,我們需要釋放所有依賴項。 – BrunoJCM

回答

2

您可能可以使用Maven Versions plugin這可以幫助正式版本的項目。

例如,use-next-releases目標可能允許您發佈最低級別的項目,然後更快速地將這些發佈的版本帶入其依賴項。

如果您喜歡根據需要釋放組件並簡單地將您的項目帶到已正式發佈的「最新」版本,那麼也可能會使用use-next-versions目標。