我的多模块Maven项目如下:
/foo
pom.xml
/foo-parent
/foo-core
/foo-something
/src
/site
注意foo
不是父项目,但foo-parent
是(foo-core
和foo-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
每个子模块?这是正确的行为吗?
答案 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.网站文档生成有一些非常重要的变化!
编辑:参考链接: