项目结构是:
/foo
pom.xml
/foo-war
pom.xml
/foo-ear
pom.xml
这是我的父pom.xml
:
..
FOO战
FOO耳
..
这是foo-ear/pom.xml
:
.. $ {} project.groupId FOO战 战争 $ {} project.version ..
编译失败并显示以下消息:
...
[INFO] Failed to resolve artifact.
Missing:
—————
1) com.foo:foo-war:war:1.0-SNAPSHOT
Try downloading the file manually from the project website.
...
看起来foo-ear
正在尝试解决尚未准备好的工件。如何指示maven事先与foo-war
合作?或者我错过了什么?
PS。当我从父pom.xml
删除此代码时,一切都已修复:
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${javadoc.version}</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
为什么?
答案 0 :(得分:5)
当我从父pom.xml(...)
中删除此代码时,所有内容都已修复
问题类似于 MJAVADOC-161 ,更常见的是 MJAVADOC-137 。您是否可以使用像maven-javadoc-plugin
这样的错误版本(遗憾的是,您没有展示它)?如果是,请尝试使用2.4版或其他更新版本。如果您使用的是大于2.4的版本,请尝试使用版本2.4以查看是否在某些时候引入了回归。在这种情况下,请打开一个新问题。
我正在使用2.5版。当我试图反转回2.4我得到:'aggregate'在执行中指定,但在插件中找不到。看起来2.5是我唯一的选择吗?您认为我需要提交错误报告吗?
我没有注意到目标,javadoc:aggregate
已在版本2.5中引入,因此它确实不会在2.4中,并且上述问题无关紧要。
但我再看了一眼,我看到了其他一些像MJAVADOC-275或MJAVADOC-276的人。我不确定是否了解确切的状态(并且错误可能没有修复)但在开启问题之前,请务必尝试使用版本2.7和版本2.6(有些人提到2.6.1中引入的回归)。
答案 1 :(得分:3)
Maven自动解析模块之间的依赖关系并以正确的顺序构建它们 (至少如果您使用的是相当当前的版本),但仅限于您从父项目构建。 (负责此操作的Maven组件称为Reactor)。
如果这不起作用,那么模块可能与引用的依赖项不同(例如版本不匹配)。
请比较
的<groupId>
,<artifactId>
,<version>
,<packaging>
/ <type>
a)耳中的依赖块和
b)战争的pom标题
答案 2 :(得分:1)
看起来好像正确设置在上面。它看起来不像构建订单问题。
当您从顶层运行时,Maven将输出反应堆构建顺序,例如:
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] foo-ear
[INFO] foo-war
这看起来不错吗?
你是否还在你的WAR pom中建立了1.0-SNAPSHOT?如果您导航到foo-war和'mvn install'然后尝试从顶层构建会发生什么?