сайт maven для многомодульного использования

StackOverflow https://stackoverflow.com/questions/5976123

  •  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 файлы из шаблона. Вот в чем суть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top