сайт maven для многомодульного использования
-
12-11-2019 - |
Вопрос
У меня есть проект maven с большим количеством подмодулей, и я использую родительский pom для управления плагинами в каталоге, как показано ниже
-pom.xml (parent pom)
+- submodule1
+- submodule2
+- src\site\site.xml
следовательно , src\site\site.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
в корне (предлагается из плагин для сайта maven), родительская веб-страница в порядке, в то время как <sub-modules>\index.html
не содержит никакого меню (нет информации о проекте и отчета о проекте)
Также я замечаю, бегу ли я mvn site
в разделе подмодули index.html слева нет никакого меню, в то время как отдельный HTML-код существует в каталоге, подобном pmd.html, license.html
- Нужно ли мне добавлять
src\site\site.xml
в каждом подмодуле или другим лучшим способом? - или я сделал что-то глупое в
pom.xml
где - нибудь ?
Какие - нибудь намеки ?
[обновление] также, как и для изображения баннера, если я установлю в родительском файле вот так
<bannerLeft>
<name>edcp</name>
<src>images/mylogo.png</src>
</bannerLeft>
Сайт для подмодуля, который указывает на неправильное направление, в html выглядит следующим образом ..\..\<submodule>
, не ..\images\mylogo.png
Решение
Если вы хотите избежать копирования сайта .xml в каждую подмодулю вручную, затем, используя Maven-Resource-Plugin может быть обходным отделением: добавьте это на родительский 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
.
e.g,
<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>
.
Теперь и генеракодицетагкод, так и расширенные меню, будут унаследоваться всеми подпространами.
См. Документация Maven для многопользовательских сайтов для более подробной информации, http://maven.apache.org/plugins/maven-site-плагин / примеры / MultiModule.html # наследование
Я наткнулся на это, пытаясь сгенерировать сайт Meaven Multule Maven и просто хотел поделиться решением, с которым я придумал.
В вашем родительском POM Add
<siteDirectory>${session.executionRootDirectory}/src/site</siteDirectory>
.
на конфигурацию плагина сайта Maven.
Это должно сообщить всем дочерним способам, чтобы получить их сайт .xml из родительского каталога.
Я использую небольшой скрипт на Python, который создает все site.xml
файлы из шаблона. Вот в чем суть.