2012-03-23 83 views
0

我有一個包含多個子模塊的父POM。對於其中的一個,我在build下添加了antrun部分 - 目前這只是打印一個聲明。此子模塊在其它模塊的依賴關係在整個集(所以家長有8個孩子1 - 8,該模塊(#5)依賴於2和3)Maven 3使用父/子模塊構建antrun問題

的antrun部的形式爲:

<build>... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>run</goal> 
        </goals> 
        <configuration> 
         <tasks> 
          <echo>******************* Running generate </echo> 
        </tasks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

    </plugins> 
</build> 

如果我在父模塊下執行一個動作(例如,驗證或安裝例如)這些工作正常,並且正如預期的那樣,爲包含此安特任務的子代(#5)運行echo語句。

但是,如果我去給孩子模塊,並嘗試MVN從那裏驗證我得到的(傳說)

could not resolve dependencies for project... 

失敗。但所有模塊都存在於我的本地回購站中,並且它們是最新的。而對於這個再次進行mvn安裝的問題,通常的修復方法並不能解決這個問題。

它看起來像一個錯誤,除非任何人知道(到底是怎麼回事)會出錯。

克里斯

+0

只是爲了確認 - 如果你暫時註釋掉這個插件,依賴錯誤就會消失嗎?如果不是,那麼哪些依賴關係找不到? – 2012-03-23 18:50:45

+0

是的,刪除子POM中的條目,一切正常 – StripLight 2012-03-24 10:18:33

+0

它抱怨什麼依賴關係?希望有線索.. – 2012-03-24 14:01:28

回答

0

好吧,我的錯這一個。我爲父項目增加了一個POM。我希望只是在那裏保持共同的依賴關係,保持最高級別的POM與respo,分配東西等

maven似乎將與本地工作,但不會部署這個POM唯一的人工製品回購 - 所以這是從來沒有在那裏找到。難題就是爲什麼在從父級執行構建時仍然有效。

無論如何它是固定的 - 我已經將dep東西摺疊到我的單親POM中,並且一切都很好。感謝所有的反饋。

0

如果您在行家稱之爲一個子模塊,你必須做一個特別的方式。

+-- root (pom.xml) 
     +-- mod-child-1 
     +-- mod-child-2 
     +-- mod-child-3 
     +-- mod-child-4 
     .... 

如果你喜歡這樣做,例如對mod-兒童3,你需要首先做一個MVN通過安裝根......之後,你可以做您的多模塊的根目錄下建立:

mvn -pl mod-child-3 package 
+0

謝謝,但我不知道我很理解你的觀點。模塊結構是平坦的,每個模塊都包含父級坐在相同的文件夾級別(不像上面所示)這是絕對必需的,因爲它們是組件,並且因此位於它們自己的** git存儲庫中。它們不能嵌套。 – StripLight 2012-03-26 08:07:19

+0

據我所知git你可以創建一個「超級模塊」(root)並添加子模塊(http://book.git-scm.com/5_submodules.html)。 – khmarbaise 2012-03-26 16:16:29