сайт maven для нескольких модулей
у меня есть проект maven с большим количеством суб-модулей, и я использую Родительский pom для управления плагинами каталога, как показано ниже
-pom.xml (parent pom)
+- submodule1
+- submodule2
+- srcsitesite.xml
srcsitesite.xml
содержит настраиваемого меню, как показано ниже
<project>
....
<body>
<menu name="Overview">
<item name="Introduction" href="introduction.html"/>
</menu>
<menu name="Development">
<item name="Getting started" href="designenv.html"/>
<item name="FAQ" href="designfaq.html" />
<item name="Javadoc" href="apidocs/index.html" />
</menu>
<menu ref="modules"/>
<menu ref="reports"/>
</body>
</project>
после того, как я запустить mvn site:stage
в корне (предлагается из Мэйвен сайта плагин), родительская веб-страница в порядке, в то время как <sub-modules>index.html
не содержит меню (нет информации о проекте и отчета о проекте)
также я замечаю, если я бегу mvn site
под подмодули, индекс.html не содержит меню слева, в то время как отдельный html существует в каталоге, таком как pmd.HTML-код, лицензию.HTML-код
- мне нужно добавить
srcsitesite.xml
в каждом суб-модуль или другие лучше ? - или я сделал что-то глупое в
pom.xml
где-то ?
какие-то намеки ?
[update] также как для изображения баннера, если я установил в родителе, как это
<bannerLeft>
<name>edcp</name>
<src>images/mylogo.png</src>
</bannerLeft>
сайт для суб-модуля с точками неправильное направление, в html, выглядит как ....<submodule>
, а не ..imagesmylogo.png
4 ответов
Если вы хотите избежать копирования сайта.XML для каждого подмодуля вручную, затем с помощью maven-ресурсы-плагин может быть обходным путем: добавьте это в свой родительский pom:
[...]
<properties>
<site.basedir>${project.basedir}</site.basedir>
</properties>
[...]
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-sitedescriptor</id>
<!-- fetch site.xml before creating site documentation -->
<phase>pre-site</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/site/</outputDirectory>
<resources>
<resource>
<directory>${site.basedir}/src/site/</directory>
<includes>
<include>**/site.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
и это каждому из ваших подмодулей poms:
<properties>
<site.basedir>${project.parent.basedir}</site.basedir>
</properties>
затем дескриптор сайта будет скопирован из родительского проекта в каждый подмодуль (перезапись существующих дескрипторов) до создания документации сайта. Обратите внимание, что каталог src/site должен существовать в каждом подмодуле, чтобы сделать эту работу. Не идеальное решение, но, возможно, лучше, чем полное ручное.
можно наследовать меню от родителя site.xml
С помощью .
например,
<project>
....
<body>
<menu name="Overview" inherit="top">
<item name="Introduction" href="introduction.html"/>
</menu>
<menu name="Development" inherit="top">
<item name="Getting started" href="designenv.html"/>
<item name="FAQ" href="designfaq.html" />
<item name="Javadoc" href="apidocs/index.html" />
</menu>
<menu ref="modules"/>
<menu ref="reports"/>
</body>
</project>
и Overview
и Development
меню будут унаследованы всеми подпроектами.
см. документацию Maven для многомодульных сайтов для получения более подробной информации, http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#Inheritance
я наткнулся на это при попытке создать многомодульный сайт maven и просто хотел поделиться решением, которое я придумал.
в вашем Родительском pom добавить
<siteDirectory>${session.executionRootDirectory}/src/site</siteDirectory>
к конфигурации плагина сайта maven.
Это должно сказать всем дочерним помпонам, чтобы получить свой сайт.xml из родительского каталога.
Я использую небольшой скрипт Python, который создает все site.xml
файлы от шаблона. вот суть.