Pergunta

Eu tenho um projeto maven, com muitas sub-módulos, e eu uso o pai pom para controlar os plugins do diretório, como abaixo

-pom.xml (parent pom)
 +- submodule1
 +- submodule2
 +- src\site\site.xml

portanto, src\site\site.xml contém o menu personalizado, como abaixo

<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>

Após a execução mvn site:stage na raiz (sugerido a partir de o maven site plugin), o pai de página da web é bom, enquanto o <sub-modules>\index.html não contém qualquer menu (nenhum projeto info & relatório de projecto)

Também percebo que se eu executar mvn site em sub-módulos, o index.html não contém nenhum menu na esquerda, enquanto o indivíduo html existem no diretório, como pmd.html, license.html

  • Eu preciso adicionar src\site\site.xml em cada sub-módulo ou outra maneira melhor ?
  • ou eu Fiz algo estúpido na pom.xml em algum lugar ?

Alguma dica ?

[update] também como para a imagem do banner, se eu definir o pai como este

<bannerLeft>
  <name>edcp</name>
  <src>images/mylogo.png</src>
</bannerLeft>

O site para o sub-módulo com pontos para a direção errada, em html, parece ..\..\<submodule>, não ..\images\mylogo.png

Foi útil?

Solução

Se você gostaria de evitar copiar o site.xml para cada sub-módulo manualmente, em seguida, usando o o maven-resources-plugin poderia ser uma solução alternativa:Adicione isso ao seu pai 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>        

e isso para cada um dos seus sub-módulo poms:

<properties>
    <site.basedir>${project.parent.basedir}</site.basedir>
</properties>

Em seguida, o site descritor será copiado a partir do projeto do pai para cada submódulo (substituindo existente descritores) antes de a documentação do site é criado.Por favor, note que o src/site diretório deve existir em cada sub-módulo para fazer este trabalho.Não é uma solução perfeita, mas talvez melhor do que um completo manual.

Outras dicas

É possível herdar menus do pai site.xml usando o inherit atributo.

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>

Agora, tanto o Overview e Development menus serão herdadas por todos os sub-projetos.

Veja o Maven documentação de multi-módulo de sites para mais detalhes, http://maven.apache.org/plugins/maven-site-plugin/examples/multimodule.html#Inheritance

Me deparei com este ao tentar gerar um multi módulo maven site e só queria compartilhar uma solução que eu encontrei.

Em seu parent pom adicionar

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

para o maven site plugin de configuração.

Que deve informar a todos a criança poms para obter a sua site.xml a partir do diretório pai.

Eu estou usando um pequeno script em Python que cria todas as site.xml arquivos a partir de um modelo. Aqui está a essência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top