2012-03-23 86 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