2010-05-10 28 views
1

我有Maven項目失敗時發佈:執行被稱爲,雖然釋放;準備按預期工作。maven-release-plugin:執行失敗,'工作目錄'... workspace target checkout workspace「不存在!'

我發現的bug報告(如下圖),這當然似乎像這個問題我有,但不能完全肯定我理解這個問題: MRELEASE516

輸出的最後幾行,我得到:

[INFO] Executing: cmd.exe /X /C "p4 -d E:\hudson\jobs\myHudsonJob\workspace\target\checkout -p 1.1.1.1:1111: client -d myProjectWorkspace-MavenSCM-E:\hudson\jobs\myHudsonJob\workspace\target\checkout" 
[INFO] Executing goals 'deploy'... 
[WARNING] Base directory is a file. Using base directory as POM location. 
[WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance. 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error executing Maven. 

Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist! 

從閱讀錯誤報告錯誤的原因可能是與我模塊的結構,我試着概括如下它:

 
/workspace 
| 
|+ pom.xml (root pom whose parent is the build pom, 
|   calling release:perform on this pom) 
|   [Modules: moduleA and moduleB] 
| 
|- moduleA 
    |+ pom.xml (parent is also build pom) 
    |+ build/pom.xml (the build pom - no custom parent) 
|- moduleB 
    |+ pom.xml (parent is build pom) 

似乎根目錄應該位於'工作區'內部的某個公共目錄中,但是嘗試過並且不起作用,對於爲什麼我需要它也沒有意義。

什麼是警告基地目錄是一個文件要我做的呢?!然後它會計算出基本目錄是工作區,這意味着找不到工作目錄...有什麼想法?

在此先感謝。

編輯:

檢查過SCM配置這一切看起來不錯,我...每個模塊中和根POM我:

<scm> 
<connection> 
    scm:perforce:1.1.1.1:1111://rootToDirectoryContainingRelevantPom 
</connection> 
<developerConnection> 
    scm:perforce:1.1.1.1:1111://rootToDirectoryContainingRelevantPom 
</developerConnection> 
</scm> 

編輯2:

也許我點擊了MRELEASE-261

+0

沒有你的poms的內容,很難說點什麼,並分析問題。另一方面,爲什麼你有這樣的結構(父級更深層次的pom)?moduleA是否有一個模塊部分用於構建? – khmarbaise 2010-05-10 16:29:21

+0

我認爲其他poms的母公司的更深層次的原因是因爲我們的項目從moduleA開始,並且從那以後一直在增長。 – 2010-05-10 16:44:27

回答

0

我通過使用更新版本的發行插件得到了這個工作。 Maven super pom對定義的發佈插件的v2.0具有依賴性。如果你不覆蓋它,那麼版本將被使用。

當您運行插件

mvn org.apache.maven.plugins:maven-release-plugin:2.2.1:perform 

您可以指定一個較新的版本,或者你可以在你的pom

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.1</version> 
    </plugin> 
0

我不確定您是否面臨MRELEASE-516(約爲release:prepare)。但是,我想知道您是否在每個POM中有正確的<scm>信息。你能證實這一點嗎?

+0

在bug報告的底部附近,他繼續解釋如果他運行版本會發生什麼情況:執行並得到完全相同的錯誤...雖然我想你是對的,但大部分報告都是關於準備的。現在請仔細檢查scm的詳細信息...謝謝 – 2010-05-10 16:47:13

+0

看到編輯,SCM配置似乎對我好... – 2010-05-11 07:42:19

0
Working directory "E:\hudson\jobs\myHudsonJob\workspace\target\checkout\workspace" does not exist! 

我剛剛在您的日誌中看到上述行。看起來你在某處設置了一些棘手的路徑。你是否在某處覆蓋了Workspace?檢查您的配置並儘量消除可選設置。

+0

不,我不重寫工作區,我使用默認似乎是目標/結帳,但自從maven認爲我有一個根目錄,然後它必須是工作空間,它也決定在工作空間下籤出......工作空間只是哈德森用作我的Perforce工作空間的默認目錄。歡呼 – 2010-05-11 07:33:00

+0

作爲補充說明;如果我沒有說清楚,它應該使用的正確目錄是「E:\ hudson \ jobs \ myHudsonJob \ workspace \ target \ checkout」,因爲在這個目錄中,一旦它失敗了,我需要打包模塊 – 2010-05-11 07:36:54

0

在我的情況下覆蓋的依賴版本相同的症狀竟然是一個結果Maven-release-plugin中的一個bug:2.2.1。見MRELEASE-705

因此擺脫錯誤的,我必須要把它放到父POM:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.0</version> 
     </plugin> 
    </plugins> 
</build> 
0

這個錯誤發生在我們

Working directory E:\Data\myproject\target\checkout does not exist! 

我們是在中間服務器工具的大型過渡以及maven的release:prepare似乎無聲無息地宣稱標籤和版本號更改已被推送而沒有錯誤。然而,經過一番研究,這些東西只是被提交給本地git倉庫,並沒有被推送 - 儘管release:prepare正在執行命令來執行推送,但從未報告過失敗 - 即使使用了命令行參數-e-X

我們使用的是Maven 3.3.9,maven release plugin 2.5.3和git client 2.9.2。

我們的最終解決方案是添加(或糾正,因爲你的情況而定)在Maven的~\.m2\settings.xml文件爲我們的git的服務器,包括與代碼推權限的用戶名和密碼(原始主)(定義以及推動主)。在是混帳服務器的主機名所需的混帳服務器的服務器定義的id

<servers> 
    <server> 
    <id>git-server</id> 
    <username>dan</username> 
    <password>changeit</password> 
    </server> 
<servers> 

安裝此更新,標籤在服務器上完成,併成功地發生了結賬。

相關問題