2013-01-08 94 views
5

我已經通過導入maven項目創建了一個新的IntelliJ項目。哪些工作得很好: enter image description here如何在Intellij IDEA 11中構建Maven導入項目?

我可以從Maven項目窗格(在IDE屏幕的左側)執行maven目標。例如,我可以使用編譯目標很好地編譯這些項目。

現在我想使用Build | Make Project選項從UI構建項目。但是,它不起作用。它抱怨丟失的應用程序包,就好像它沒有看到依賴關係一樣。這些依賴關係是在各自的pom.xml文件中定義的,但是使IDE中的項目似乎忽略它。

我該怎麼做才能使它工作?

編輯

OK,我從我的家中刪除的.m2目錄目錄,並開始在Maven項目彈出編譯目標。我可以在Maven在從Maven的中央下載依賴控制檯窗格中看到(我給日誌的只是前幾行,這是很長):

"C:\Program Files (x86)\Java\jdk1.6.0_29\bin\java" -Dclassworlds.conf=O:\java\apache-maven-3.0.4\bin\m2.conf -Dmaven.home=O:\java\apache-maven-3.0.4 -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 11.1.2\bin" -Dfile.encoding=UTF-8 -classpath "O:\java\apache-maven-3.0.4\boot\plexus-classworlds-2.4.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 11.1.2\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher --no-plugin-registry --fail-fast --strict-checksums --update-snapshots -f C:\dev\shunra\Application\Builder\build\vcat\pom.xml compile 
[WARNING] Command line option -npr is deprecated and will be removed in future Maven versions. 
[INFO] Scanning for projects... 
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.shunra:VCat-build:pom:1.0.0.SNAPSHOT 
[WARNING] 'version' uses an unsupported snapshot version format, should be '*-SNAPSHOT' instead. @ line 7, column 11 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 
[WARNING] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Build Order: 
[INFO] 
[INFO] util.logging 
[INFO] Infra 
[INFO] dtos 
[INFO] commons 
[INFO] license 
[INFO] core 
[INFO] vcat 
[INFO] VCat-build 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building util.logging 0.0.1 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom (7 KB at 7.2 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/19/maven-plugins-19.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/19/maven-plugins-19.pom (11 KB at 38.7 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/19/maven-parent-19.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/19/maven-parent-19.pom (25 KB at 70.0 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom (15 KB at 63.5 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar (26 KB at 63.1 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom (8 KB at 29.6 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom (13 KB at 53.6 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/16/maven-parent-16.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/16/maven-parent-16.pom (23 KB at 66.8 KB/sec) 
Downloading: http://repo.maven.apache.org/maven2/org/apache/apache/7/apache-7.pom 
Downloaded: http://repo.maven.apache.org/maven2/org/apache/apache/7/apache-7.pom (15 KB at 59.5 KB/sec) 

所以,我認爲有連接沒有問題Maven Central。

EDIT2

請注意以下幾點: enter image description here 注意到這個問題 - 有來自Maven的進口兩個模塊 - 常見核心。他們的Maven神器Id分別是commons核心。的IntelliJ似乎到工件ID和模塊名之間的混淆,因爲:

  1. 項目彈出顯示模塊名稱,後面加上相應的Maven構件編號在括號中。
  2. 在項目設置對話框中,這些模塊僅由相應的Maven工件標識給出。
  3. 但在模塊相關性中,它只列出模塊名稱。

核心模塊(Maven的工件ID 核心)應該看到依賴通用模塊(Maven的工件ID 公共),但它沒有,這就是問題所在。

EDIT3

這裏是最頂層的POM。XML:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.shunra</groupId> 
    <name>VCat-build</name> 
    <version>1.0.0.SNAPSHOT</version> 
    <artifactId>VCat-build</artifactId> 
    <packaging>pom</packaging> 
    <modules> 
     <module>../../../util.logging</module> 
     <module>../../../Infra</module> 
     <module>../../../DTOs</module> 
     <module>../../../ShunraLicense</module> 
     <module>../../../Common</module> 
     <module>../../../Core</module> 
     <module>../../../VCat</module> 
    </modules> 
    <build> 
     <plugins> 
     </plugins> 
    </build> 
</project> 

這裏是一個通用模塊:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.shunra</groupId> 
    <artifactId>commons</artifactId> 
    <version>0.0.1</version> 
    <dependencies> 
     <dependency> 
      <groupId>com.sun.jna</groupId> 
      <artifactId>jna</artifactId> 
      <version>3.0.9</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-math</artifactId> 
      <version>2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.4</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.2.7</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
       <groupId>com.shunra</groupId> 
       <artifactId>util.logging</artifactId> 
       <version>0.0.1</version> 
     </dependency> 
     <dependency> 
       <groupId>com.google.code.gson</groupId> 
       <artifactId>gson</artifactId> 
       <version>1.6</version> 
       <scope>compile</scope> 
     </dependency> 
     <dependency> 
       <groupId>commons-codec</groupId> 
       <artifactId>commons-codec</artifactId> 
       <version>1.6</version> 
       <scope>compile</scope> 
     </dependency> 
     <dependency> 
       <groupId>org.restlet.jse</groupId> 
       <artifactId>org.restlet</artifactId> 
       <version>2.0.10</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>commons-configuration</groupId> 
      <artifactId>commons-configuration</artifactId> 
      <version>1.8</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>commons-beanutils</groupId> 
      <artifactId>commons-beanutils</artifactId> 
      <version>1.8.3</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
<!--  <dependency> 
      <groupId>com.shunra</groupId> 
      <artifactId>license</artifactId> 
      <version>0.0.1</version> 
     </dependency> --> 
     <dependency> 
       <groupId>com.shunra</groupId> 
       <artifactId>dtos</artifactId> 
       <version>0.0.1</version> 
     </dependency> 
    </dependencies> 
    <repositories> 
    <repository> 
     <id>maven-restlet</id> 
     <name>Public online Restlet repository</name> 
     <url>http://maven.restlet.org</url> 
    </repository> 
    </repositories> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source/> 
      <target/> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

這裏是一個核心模塊:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.shunra</groupId> 
    <artifactId>core</artifactId> 
    <version>0.0.1</version> 
    <dependencies> 
    <dependency> 
     <groupId>com.shunra</groupId> 
     <artifactId>commons</artifactId> 
     <version>0.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.shunra</groupId> 
     <artifactId>license</artifactId> 
     <version>0.0.1</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source/> 
      <target/> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

EDIT4

最後解決了它。刪除所有Intellij文件並再次重新導入。我猜pom.xml文件已經改變了IntelliJ的方式。

+0

您是否檢查過完美是一個maven項目?聽起來不像它已經正確地設置了它的依賴關係,例如,它不會把它們從pom中拉出來。 –

+0

剛剛添加** EDIT2 **的主題。我如何解決它? – mark

回答

5

查看屏幕截圖,您不會看到脫機工作,這是導致此問題的最常見原因。

  1. 嘗試下載源代碼和文檔從Maven項目彈出(這是從左邊數第三個圖標)。這通常會喚醒它並導致下載。

  2. 使用運行時配置執行手動Maven構建。選擇編輯配置|然後Maven確保你的工作目錄是你的項目根目錄,並選擇一個「clean package」的目標。這將迫使Intellij直接通過Maven重建,這可能會喚醒內部後臺構建過程。

  3. 檢查您的設置並確保Intellj的Maven已經從POM正確讀取了存儲庫信息並能夠找到Maven Central。您的本地settings.xml可能會阻止下載。

  4. 您也可以刪除.idea和.iml文件以強制項目重新導入。

  5. 重新啓動的IntelliJ和希望最好...

  6. 作爲最後的手段,通過文件無效的高速緩存|使緩存無效。這可能會縮短您的開發時間,直到它們通過使用進行重建。看來,你的POM文件是有點亂的

編輯覆蓋更新的問題

。它們不遵循標準Maven directory layout,因此Intellij可能會在您的目錄名稱和內部artifactId條目之間產生混淆。通常,父POM(包含模塊)放置在項目的根目錄中,模塊在下面形成一個目錄層次結構。

通過一些廣泛的設置配置,您可以強制Intellij使用現有結構,但更好的解決方案是重命名目錄以匹配artifactIds並移動模塊,以便它們形成Maven反應器項目。

在評論

的光進一步編輯看來,這是的IntelliJ項目同步。刪除.idea目錄和.iml文件的技巧。我已經相應地更新了列表。

+0

請參閱**編輯**。 – mark

+0

確定 - 這是否解決了您的問題,因爲它似乎正在下載? –

+0

沒有。結果完全一樣。 – mark

相關問題