我有一个包含多个子模块的父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这个问题的常见修复并没有解决它。
对我来说这看起来像个错误,除非其他人知道(到底是什么)出错了。
克里斯
答案 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)
maven似乎将在本地工作,但不会将这个POM仅用于回购 - 因此从未在那里找到过。拼图是为什么在从父级执行构建时仍然有效。
无论如何它是固定的 - 我已经把dep东西折叠到我的单亲POM中,一切都很顺利。感谢您的反馈。