2013-07-24 59 views
3

是的我做過mvn cleanJavac不會編譯類到目標文件夾

試圖在Maven的3.1.0,3.0.4和3.0.3

我的多模塊Maven項目的構建(MVN安裝)在某個模塊出現故障。原因是最後一個模塊是用SUCCESS構建的,但實際上罐子是空的。然後下一個模塊找不到需要查看的類。

[INFO] Reactor Summary: 
[INFO] 
[INFO] myproject ......................................... SUCCESS [0.309s] 
[INFO] myproject-service ................................. SUCCESS [0.011s] 
[INFO] myproject-service-api ............................ SUCCESS [1.242s] 
[INFO] myproject-service-spi ............................ FAILURE [1.422s] 
[INFO] myproject-datap-lib-impl .................. SKIPPED 
... 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 19.746s 
[INFO] Finished at: Wed Jul 24 17:30:57 EEST 2013 
[INFO] Final Memory: 62M/919M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project myproject-service-spi: Compilation failure: Compilation failure: 
[ERROR] C:\dev\mything\myproject\trunk-checkout2\service\spi\src\main\java\org\myself\service\spi\validation\fake\AbstractConfigurableFakeDetector.java:[12,55] error: package org.myself.service.validation.fake does not exist 

以下是運行mvn -X clean install -amd -Dmaven.test.skip=true > build.loghttp://nopaste.info/7f07571993.html

在IntelliJ IDEA的輸出完整的調試這一切看起來不錯,類存在。

不只是生成的jar是空的,也是文件夾service/api/target/classes。對於服務的API

我的POM文件是非常基本的,只是工作和其他人一樣:在這裏

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <artifactId>myparent</artifactId> 
     <groupId>my.parent</groupId> 
     <version>myversion</version> 
    </parent> 

    <groupId>myproject.service.api</groupId> 
    <artifactId>myproject-service-api</artifactId> 

    <dependencies> 
     ... some local and external dependencies 
    </dependencies> 

    <properties> 
    </properties> 
</project> 

沒有Maven插件。

我不認爲我有循環依賴,因爲Maven 3會檢測到這一點。

UPDATE

我現在得到它歸結爲這樣:

[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building myproject-service-api 4.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ myproject-service-api --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory C:\myproject\trunk-checkout2\service\api\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myproject-service-api --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 217 source files to C:\myproject\trunk-checkout2\service\api\target\classes 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.908s 
[INFO] Finished at: Wed Jul 24 21:56:49 EEST 2013 
[INFO] Final Memory: 20M/232M 
[INFO] ------------------------------------------------------------------------ 

並運行後右:簡單MVN創建空罐子給我這個輸出IntelliJ IDEA的模塊上編譯那個文件夾C:\ myproject \ trunk-checkout2 \ service \ api \ target \ classes是空的。所以檢測到217個Java類,maven說它編譯它們並將它們放到我的目標文件夾中,但它沒有。

更新2

我比較的模塊mvn -X compile該作品相比,這一個輸出(記住,在建所有成功結束,但是這其中有一個空的目標文件夾)。有一個區別:失敗的人列出所有的Java文件爲「陳舊來源檢測」。

[DEBUG] Using compiler 'javac'. 
[DEBUG] Source directories: [C:\myproject\trunk-checkout2\service\api\src\main\java] 
[DEBUG] Classpath: [C:\myproject\trunk-checkout2\service\api\target\classes 
... all the dependency jars 
[DEBUG] Output directory: C:\myproject\trunk-checkout2\service\api\target\classes 
[DEBUG] CompilerReuseStrategy: reuseCreated 
[DEBUG] useIncrementalCompilation enabled 
[DEBUG] Stale source detected: C:\dev\myproject\trunk-checkout2\service\api\src\main\java\my\Class.java 
... listing all 217 classes 
[INFO] Changes detected - recompiling the module! 
[DEBUG] Classpath: 
[DEBUG] C:\myproject\trunk-checkout2\service\api\target\classes 
... all the dependency jars 
[DEBUG] Source roots: 
[DEBUG] C:\myproject\trunk-checkout2\service\api\src\main\java 
[DEBUG] Command line options: 
[DEBUG] -d (...) -g -nowarn -target 1.6 -source 1.6 -encoding UTF-8 
[DEBUG] incrementalBuildHelper#beforeRebuildExecution 
[INFO] Compiling 217 source files to C:\myproject\trunk-checkout2\service\api\target\classes 
[DEBUG] incrementalBuildHelper#afterRebuildExecution 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 4.060s 
[INFO] Finished at: Wed Jul 24 23:16:37 EEST 2013 
[INFO] Final Memory: 22M/328M 
[INFO] ------------------------------------------------------------------------ 

我已經看到了這個錯誤報告https://jira.codehaus.org/browse/MCOMPILER-205,我確實有這個模塊中package-info.java文件,但我已經嘗試了前3編譯器插件,同樣的結果。我已經用上面描述的註釋嘗試過了,也沒有運氣。所以我不認爲這是相同的情況。

我沒有一個公共靜態無效的主力,因此這個bug Workaround for javac compilation order bug in maven不能吧。

更新3

有一個在javac的中止,恕不另行通知(-verbose開啓)。只有1班作品,全部217人失敗。所以我想我必須嘗試找到導致它的原因,等等......將再次發佈。

回答

0

原因是由於javac中的錯誤。它無法處理的一些有效語法。然後生成空罐子,等等。

+0

你可以發佈問題語法和你的Java版本嗎? –

0

首先在你的日誌輸出有這樣的事情${version}你應該解決而且大約有依賴關係等的重複定義其他幾個警告提示

我已經採取了進一步深入查看日誌輸出:

[ERROR] C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespivalidationfakeAbstractConfigurableFakeDetector.java:[12,55] error: package org.myself.service.validation.fake does not exist 
[ERROR] C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespivalidationfakeAbstractConfigurableFakeDetector.java:[13,55] error: package org.myself.service.validation.fake does not exist 
[ERROR] C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespivalidationfakeAbstractConfigurableFakeDetector.java:[82,14] error: cannot find symbol 
[ERROR] symbol: class SimpleValidationResult 
    location: class AbstractConfigurableFakeDetector 
C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespivalidationfakeAbstractConfigurableFakeDetector.java:[106,66] error: cannot find symbol 
[ERROR] symbol: class FakeType 
    location: class AbstractConfigurableFakeDetector 
C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespivalidationfakeAbstractConfigurableFakeDetector.java:[97,8] error: cannot find symbol 
[ERROR] symbol: class SimpleValidationResult 
    location: interface SomethingThatReturnsValidationResult 
C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespigenderresultAverageComputedGenderResultCollector.java:[4,46] error: package org.myself.service.gender does not exist 
[ERROR] C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespigenderresultAverageComputedGenderResultCollector.java:[5,46] error: package org.myself.service.gender does not exist 
[ERROR] C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespigenderresultAbstractAverageGenderCollector.java:[4,46] error: package org.myself.service.gender does not exist 
[ERROR] C:devmythingmyprojecttrunk-checkout2servicespisrcmainjavaorgmyselfservicespigenderresultAverageComputedGenderResultCollector.java:[31,29] error: cannot find symbol 
[ERROR] symbol: class ComputedGenderResult 
    location: class AverageComputedGenderResultCollector 

這給我的印象是您正在使用測試類,或者可能是測試區域中的軟件包名稱,這些名稱不起作用,或者您錯過了與其他軟件包的依賴關係。

+0

像C:devmythingmyprojecttrunk-checkout2servicespis這些文件夾名稱被nopaste弄傷了(儘管我選擇了'plain')。他們不是問題。報告的缺失包/類的問題正是因爲它們應該放在空罐子裏。 –