2014-05-08 112 views
1

我有一個3模塊maven項目與父pom。當我運行maven clean-compile-test時,從父項開始。它在測試階段失敗了,並且給我的本地類提供了大量的編譯錯誤,表示「找不到符號」。Maven編譯不會創建類文件

我發現使用的IntelliJ IDE如果我之前使用「使項目」按鈕我運行Maven的測試,然後行家測試作品!

編輯:現在我想通了,probelem是行家編譯的目標文件夾中不創建類文件,由於某種原因,這是我的maven編譯器插件的父POM文件中的配置:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 

       <source>1.6</source> 
       <target>1.6</target> 
       <excludes> 
        <exclude>**/*.*</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
    </plugins> 

</build> 

任何想法?

+0

如果您可以發佈您的pom.xml文件,它會容易得多。 – DanielBarbarian

+0

是否有可能包含缺少的類的任何快照依賴項更新? –

+0

@Uwe Allner我更新了問題 – Spring

回答

6

Maven並不關心package階段的缺失符號;丟失的符號只會在compile階段(= Java編譯器由Maven運行時)報告。

要找出爲什麼找不到符號,您需要檢查其中一個錯誤。查看文件夾target並檢查是否存在缺失的類(在正確的位置)。

mvn clean刪除此文件夾,但mvn compile應該把新文件放在那裏。

如果你看不到任何明顯的東西,那麼在target文件夾的某處保存所有文件的列表。然後在IDEA中構建項目。再次創建所有文件的列表。

對兩個列表進行排序然後進行比較。這可能會讓你知道什麼是錯的。我的猜測是你以奇怪的方式配置Maven(移動源文件夾或目標文件夾)。

編輯配置

<excludes> 
    <exclude>**/*.*</exclude> 
</excludes> 

告訴Maven「忽略所有的源文件」,這是等同於「什麼也不做」。刪除它並重試。

+0

tnx clean compile工作正常,maven測試發生問題。一個測試類找不到其他java類,並給符號找不到錯誤 – Spring

+0

和是編譯不會創建目標文件夾中的類,但「make項目」沒有,我的maven編譯插件沒有配置好? – Spring

+0

你告訴它不要編譯任何東西。查看我的編輯。 –

9

還有一件事。

在pom.xml中查找,標記爲<packaging>。如果它設置爲pom,Maven不應該爲您創建類文件。將其更改爲適當的包 - jar,war ...