сайт maven для мульти-модуля - PullRequest
7 голосов
/ 12 мая 2011

У меня есть проект 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

Ответы [ 4 ]

4 голосов
/ 07 января 2015

Можно наследовать меню от родительского site.xml, используя атрибут inherit.

Например,

<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

4 голосов
/ 19 мая 2011

Если вы не хотите копировать site.xml в каждый подмодуль вручную, то можно использовать maven-resources-plugin .

[...]
<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 должен существовать в каждом подмодуле, чтобы эта работа работала. Не идеальное решение, но, возможно, лучше, чем полное ручное решение.

2 голосов
/ 18 декабря 2015

Я наткнулся на это при попытке создать многомодульный сайт maven и просто хотел поделиться решением, которое придумал.

В родительской помете добавьте

<siteDirectory>${session.executionRootDirectory}/src/site</siteDirectory>

в конфигурацию плагина сайта maven.

Это должно сказать всем дочерним poms получить их site.xml из родительского каталога.

0 голосов
/ 11 марта 2013

Я использую небольшой скрипт Python, который создает все site.xml файлы из шаблона. Вот суть .

...