有什麼方法可以更改Jenkins Maven構建的工作目錄嗎?有什麼方法可以更改Jenkins Maven構建的工作目錄嗎?
使用案例
有一個Maven構建,如果當前工作目錄是在它的pom.xml目錄只會工作,所以我想Maven構建在該目錄下執行。
帶有pom.xml的目錄位於git項目的子目錄中。
有什麼方法可以更改Jenkins Maven構建的工作目錄嗎?有什麼方法可以更改Jenkins Maven構建的工作目錄嗎?
有一個Maven構建,如果當前工作目錄是在它的pom.xml目錄只會工作,所以我想Maven構建在該目錄下執行。
帶有pom.xml的目錄位於git項目的子目錄中。
我們正在使用的Jenkins是德語,所以我試圖猜測選項是如何翻譯的。
轉到您的項目配置,然後進入增強的項目配置(這是第二部分)並展開它。最後一點應該是Change folder of workspace
。我想這可能是你正在尋找的。
否則,你可以隨時去到Build
選擇和路徑更改爲你的pom.xml
轉到你的Maven項目的配置,則:
構建>點擊「高級」按鈕>勾選「使用自定義的工作空間」>設置目錄
(我使用詹金斯版本1.508)
您是否指'高級項目選項>使用自定義工作區?如果是這樣,根據文檔,「這是代碼簽出和構建發生的目錄」,這不會解決我的工作目錄設置爲項目子目錄的情況下執行構建的情況。 –
創建目標檢出父。
創建目標,以建立自己的路徑
它爲我工作。
我沒有在任何地方看到「更改工作區文件夾」選項(Jenkins ver。1.605)。 –
這是手冊嗎? – rogerdpack
@rogerdpack,不知道我是否理解你的問題,但不是,它不是手動拷貝(當然,你可以複製路徑,但不是文件),它只是對整個項目工作區內的文件夾的引用 – ton
您可以使用Maven's -f
option
-f,--file <arg> Force the use of an alternate POM file (or directory with pom.xml).
例如,如果你的項目有一個結構:
README.md
sources
|----pom.xml
|----services
| |----pom.xml
| +----src
|----webservices
| |----pom.xml
| +----src
+----....
useful
docs
那麼你可以使用Goals
在Invoke top-level Maven targets
:
-f sources/pom.xml clean install
這不會更改工作目錄;作爲Maven構建的一部分運行的腳本假設當前工作目錄是其中包含'pom.xml'的目錄。 –
這根本不回答問題。它回答* a *的問題,但不是所要求的... – Jasper
這對我有效。 –
對於一個參考,這是對我有用的東西。在「調用頂級Maven目標」構建步驟中,有一個「高級...」按鈕。如果你點擊這個按鈕,你可以指定你的POM.xml文件的相對路徑。這應該確保您只在子目錄中構建所需的項目。
也許你是指在這裏構建預先步驟?這就是我找到選項的地方(無論如何,請參閱Foon的答案,瞭解如何在非步驟FWIW中執行此操作...) – rogerdpack
不知道何時添加了這個,但是對於我前面的Jenkins(Jenkins版本1.627,頁面底部),現在有一個選項可以定義根pom.xml的位置(幫助消息說:
如果您的工作空間在什麼地方頂層的pom.xml比 第一個模塊的根目錄等,指定路徑(相對於 模塊根)在這裏,如父/ pom.xml的。如果留空,默認爲 pom.xml
)。我面臨着同樣的問題,但後來意識到答案是盯着我的臉(請注意,我沒有打先進的Hua2308建議,可能是因爲他們改變了UI)
在我的情況中,我嘗試了這種方法,但似乎無法正常工作,但事實證明,我有一個習慣「構建後」步驟是從根開始構建的,而最初的構建工作正常。所以請注意self:addd「-f XXX」以手動構建步驟,如果您使用此選項:) – rogerdpack
OP問及CWD。這個答案並不能解決運行** mvn -f submodule/pom.xml **和** cd submodule && mvn **時產生不同結果的編寫不佳的項目層次結構的問題(例如:只有一種方法可以工作,因爲相對路徑POMS)。 Jenkins Maven和Freestyle作業似乎沒有提供像Pipeline作業那樣更改工作目錄的方法,所以Pipeline實際上是唯一的解決方案。請注意,Maven和Freestyle作業不同地執行** mvn -f submodule/pom.xml ** - 特別是在不同的目錄中。 – Akom
解決方案:
cd subfolder; mvn -f ../pom.xml task
Maven沒有提供相反的選擇,這意味着這種用例的明智方式,可能是因爲Maven恨你。
A.「更改工作區文件夾」更改項目下載到的文件夾,而不是執行Maven構建的進程的工作目錄。 B.無論構建了哪個pom.xml,工作目錄都是工作空間的頂層目錄。 –
嗯,好的。對不起,我忍不住。 –