为什么Maven要求我在多模块站点部署的每个模块中进行分发配置?

时间:2010-12-17 18:30:04

标签: maven-2 maven

我的多模块Maven项目如下:

/foo
  pom.xml
  /foo-parent
  /foo-core
  /foo-something
  /src
    /site

注意foo不是父项目,但foo-parent是(foo-corefoo-something)。 foo不是从foo-parent继承的。站点配置存储在foo中。所有其他子模块对项目站点一无所知,也没有<distributionManagement>。 mvn网站运作完美,现在我正在运行mvn site-deploy

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:2.0.1:deploy
(default-deploy) on project foo-parent: Missing site information in the 
distribution management element in the project.. -> [Help 1]

Maven正在尝试site-deploy每个子模块?这是正确的行为吗?

1 个答案:

答案 0 :(得分:3)

关于您的分发配置问题:

Maven不会让子模块成为顶级pom.xml的父pom。那是Maven告诉你的那种方式,你没有构建你的项目。

你必须让foo的pom.xml成为整个项目中所有模块的父pom。

您尝试构建的内容的解决方法是,使用依赖于foo-parent的模块,在其pom的父节中列出foo-parent的pom.xml。然后在其父节中有foo-parent list foo的pom.xml。你可以让foo-parent成为所有其他模块的父pom.xml,因为所有模块在结构布局上都是彼此对等的。

顶级pom.xml应该只包含所有模块之间共享的必要信息。

关于您的网站部署问题:

Maven尝试为每个模块单独部署每个站点,因为您已设置了顶级/src/site/site.xml。但这也部分归因于您可能正在从顶级(foo)运行站点部署。如果您只需要foo-parent的文档,请仅在foo-parent上运行site-deploy。但是,您可能无法获得链接到foo-parent网站文档中的其他模块的任何文档。

P.S。更好地阅读Maven 3.网站文档生成有一些非常重要的变化!

编辑:参考链接: