Maven 3使用父/子模块构建antrun问题

时间:2012-03-23 16:31:45

标签: java maven multi-module

我有一个包含多个子模块的父POM。对于其中一个我在构建中添加了一个antrun部分 - 此刻这只是打印一个语句。这个子模块依赖于整个集合中的其他模块(所以父节点有8个子节点1-8,这个模块(#5)依赖于2和3)

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这个问题的常见修复并没有解决它。

对我来说这看起来像个错误,除非其他人知道(到底是什么)出错了。

克里斯

2 个答案:

答案 0 :(得分:0)

如果您在maven中调用子模块,则必须以特定方式执行此操作。

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

如果您喜欢为mod-child-3执行此操作,则需要先通过root进行mvn安装...之后,您可以从多模块构建的根位置执行以下操作:

mvn -pl mod-child-3 package 

答案 1 :(得分:0)

好的,我的错是这个。我在父项目中添加了一个额外的POM。我希望在那里放置常见的依赖关系,保持顶级POM与respo,分发等等。

maven似乎将在本地工作,但不会将这个POM仅用于回购 - 因此从未在那里找到过。拼图是为什么在从父级执行构建时仍然有效。

无论如何它是固定的 - 我已经把dep东西折叠到我的单亲POM中,一切都很顺利。感谢您的反馈。