Java 如何为Maven指定模块的顺序?

Java 如何为Maven指定模块的顺序?,java,maven-2,Java,Maven 2,项目结构为: /foo pom.xml /foo-war pom.xml /foo-ear pom.xml 这是我的父母pom.xml: 。。 福娃 富耳 这是foo-ear/pom.xml的内容: 。。 ${project.groupId} 福娃 战争 ${project.version} 编译失败,出现以下消息: ... [INFO] Failed to resolve artifact. Missing: ————— 1) com.foo:foo-war:

项目结构为:

/foo
  pom.xml
  /foo-war
    pom.xml
  /foo-ear
    pom.xml
这是我的父母
pom.xml

。。 福娃
富耳

这是
foo-ear/pom.xml
的内容:

。。 ${project.groupId} 福娃 战争 ${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
?或者我错过了什么

另外,当我从父级中删除此代码时,一切都已修复
pom.xml


org.apache.maven.plugins
maven javadoc插件
${javadoc.version}
编译
总数的

为什么?

Maven会自动解析模块之间的依赖关系,并以正确的顺序构建它们 (至少当您使用的是相当最新的版本时),但仅当您从父项目生成时。(负责这项工作的Maven组件称为反应堆)

如果这不起作用,则模块可能与引用的依赖项不同(例如,版本不匹配)

请比较

a) ear中的依赖项块和


b) war的pom标题看起来好像在上面正确设置。这看起来不像是一个构建顺序问题

当您从顶层运行时,Maven将输出反应堆建造顺序,例如:

[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO]   foo-ear
[INFO]   foo-war
这个看起来可以吗

您是否也确定要在WAR pom中构建1.0-SNAPSHOT?如果导航到foo-war和“mvn-install”,然后尝试从顶层构建,会发生什么

当我从父pom.xml(…)中删除此代码时,一切都已修复

这个问题看起来很相似,而且更普遍。您可能正在使用像2.3这样的
maven javadoc插件的bug版本(遗憾的是,您没有展示它)?如果是,请尝试使用2.4版或其他较新版本。如果您使用的是大于2.4的版本,请尝试使用2.4版本,看看是否在某个时候引入了回归。在这种情况下,请打开一个新的问题



我使用的是2.5版。当我尝试返回到2.4版本时,我得到的结果是:“aggregate”是在执行中指定的,但在插件中找不到。看来2.5是我唯一的选择?你认为我需要提交错误报告吗

我没有注意这个目标,它已经在2.5版中引入,所以它实际上不会出现在2.4版中,而且上面提到的问题与此无关


但我再看了一眼,发现还有一些人喜欢或。我不确定是否了解确切的状态(错误可能还没有修复),但在打开问题之前,请确保尝试使用版本2.7和版本2.6(有些人提到在2.6.1中引入的回归)

您在哪个模块上运行的确切Maven命令是什么?我在
foo
上运行
mvn clean install
(不在任何特定模块上)我隔离了问题,并更改了问题(见上文)我使用的是2.5版。当我尝试返回到2.4时,我得到:
在执行中指定了“聚合”,但在插件中找不到。看来2.5是我唯一的选择?你认为我需要提交一份bug报告吗?@Pascal与2.6和2.7的情况相同:(@Vincenzo我恐怕这个问题还没有解决,你可能应该打开一个问题(用一个简单的项目演示这个行为)。并且毫不犹豫地链接到标记为已关闭的现有问题。@Pascal我看到MJAVADOC-275报告为已关闭,而问题仍然存在。您知道在这种情况下可以做什么吗?如果我在他们的JIRA错误跟踪中打开另一个问题,他们会将其关闭为“重复”(就像他们对MJAVADOC-276所做的那样。你有什么建议?@vincenzo发表评论(就像你做的那样),附上一个压缩的项目,允许复制问题(你仍然可以这样做),并要求人们重新打开问题(除非他们希望你创建一个新的问题)。但是附上一个项目来演示问题。