2013-07-26 69 views
2

我正在更新我正在處理的項目的POM中不同的依賴項和插件的版本。其中一個更新是將maven-compiler-plugin從版本2.3.2升級到3.1。做完這些之後,項目中的一些組件現在不再成功構建。給出的唯一的錯誤是這樣的:maven-compiler-plugin參數字符串超過OS X終端限制

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project-name: Compilation failure -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project project-name: Compilation failure 

運行時使用-X開關行家,我們也看到,在日誌的文字一塊巨大的。我們成功設法通過javac運行這段文本,發現問題基本上歸結爲參數字符串(即命令行選項)太長,無法在OS X中處理Bash。

-bash: /usr/bin/javac: Argument list too long 

我試圖逐漸增加版本號以及問題在maven-compiler-plugin版本3.0開始。

這是插件如何在POM的輸入:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <verbose>true</verbose> 
     <encoding>UTF-8</encoding> 
     <source>1.6</source> 
     <target>1.6</target> 
    <forceJavacCompilerUse>true</forceJavacCompilerUse> 
    </configuration> 
</plugin> 

有一個在命令行選項顯然超過350K的字符,其中OS X終端只是無法處理。 OS X的ARG_MAX是32 kb,而Linux Ubuntu似乎支持256 kb。 Linux Ubuntu用新版本編譯程序並不困難,所以對我來說基本上證實了我們的懷疑。因此

我的問題可以歸結爲兩點:

1),我們可以得到的Maven給我們一個正確的錯誤消息,而不是需要手動通過javac的運行文本的這個巨大的塊? (任何其他錯誤都應視爲錯誤並顯示在適當的錯誤消息中)。我們嘗試了一些設置,但沒有運氣。

2)是否有修復既可以在)從產生這種規模的參數字符串(東西顯然從2.3.2版本發生停止Maven的。到3.1),或b)增加對OS X的MAX_ARG?

+0

https://jira.codehaus.org/browse/MCOMPILER可能更適合bug報告 – 2013-07-26 11:04:52

回答

0

經常拿這一切的時候,我像/ JAVA /平方米/ R加入

<localRepository>/java/m2/r</localRepository> 

~/.m2/settings.xml

+1

即使在此之後,參數串仍然過長。有趣的部分是,這顯然只是在將maven-compiler-plugin升級到版本3.0之後出現的一個問題,並且在版本2.5.1上不存在問題。另一個有趣的事情是告訴Maven使用eclipse編譯器實際上解決了這個問題。然而,在這個項目中,轉向使用eclipse編譯器並不是我們可以輕易做到的事情。 –

0

開發移動M2_REPO的東西更接近根部的習慣刪除整個~/.m2/repository終於爲我工作。