Pregunta

Estoy intentando conseguir Maven para montar una guerra con el tiempo de ejecución BIRT en un lugar útil en la guerra.

El tiempo de ejecución BIRT está en el pom.xml como

<dependency>
  <groupId>org.eclipse.birt</groupId>
  <artifactId>report-engine</artifactId>
  <version>2.3.2</version>
  <type>zip</type>
  <scope>runtime</scope>
</dependency>

El resultado deseado de superposición esto es algo así como

ReportEngine/lib/*           -> WEB-INF/lib 
ReportEngine/configuration/* -> WEB-INF/platform/configuration 
ReportEngine/plugins/*       -> WEB-INF/platform/plugins 

Mi configuración de superposición parece

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <overlays>
      <overlay>
        <groupId>org.eclipse.birt</groupId>
        <artifactId>report-engine</artifactId>
        <type>zip</type>
        <includes>
          <include>ReportEngine/lib/*</include>
        </includes>
        <targetPath>WEB-INF/lib</targetPath>
      </overlay>
      <overlay>
        <groupId>org.eclipse.birt</groupId>
        <artifactId>report-engine</artifactId>
        <type>zip</type>
        <includes>
          <include>ReportEngine/configuration/*</include>
          <include>ReportEngine/plugins/*</include>
        </includes>
        <targetPath>WEB-INF/platform</targetPath>
      </overlay>
    </overlays>
  </configuration>
</plugin>

Por supuesto, cuando se ejecuta mvn war:exploded que estoy viendo

ReportEngine/lib/*           -> WEB-INF/lib/ReportEngine/lib/ 
ReportEngine/configuration/* -> WEB-INF/platform/configuration/ReportEngine/lib/ 
ReportEngine/plugins/*       -> WEB-INF/platform/plugins/ReportEngine/lib/

Esto se refiere, el mismo tipo de problema, no hay respuesta http: // www.coderanch.com/t/447258/Ant-Maven-Other-Build-Tools/Maven-war-dependencies-moving-files

Los puntos de bonificación para señalar cómo puedo arreglar esto un poco por tener todo el trabajo desde dentro WEB-INF/birt-runtime

Editar:

La razón de las ubicaciones especificadas anteriormente son que coincidan con los indicados en el http: / /wiki.eclipse.org/Servlet_Example_%28BIRT%29_2.1 y cuando Fritz con la instalación de Tomcat para imitar esto, todo parece funcionar. Sería ideal si pudiera simplemente superponer la postal en WEB-INF / Birt-tiempo de ejecución y ajuste la configuración del motor adecuada, pero no he encontrado que funcione hasta el momento.

Por ejemplo:

engineConfig = new EngineConfig();
engineConfig.setEngineHome("WEB-INF/birt-runtime");
engineConfig.setPlatformContext(new PlatformServletContext(servletContext));
¿Fue útil?

Solución

Actualización:. Al volver a leer la pregunta que me di cuenta de que me perdí los subdirectorios de mi proyecto de prueba, así que por supuesto que trabajó para mí, lo siento por eso

Por lo que yo sé no existe ningún mecanismo, ya sea en la superposición de la guerra o la dependencia-plugin para descomprimir subcarpetas de artefactos en un directorio y excluir a los elementos primarios de la ruta, ambos van a darle todo el pariente camino.

Sin embargo, puede utilizar el objetivo de desempaquetado para descomprimir el archivo en una carpeta temporal, a continuación, utilizar el antRun-plugin para copiar las subcarpetas necesarias a sus lugares de descanso final.

La siguiente configuración haría sólo que (todavía no he probado este modo disculpas si hay alguna omisión, consulte la documentación para los detalles exactos). Tenga en cuenta las ejecuciones están en la misma fase, pero siempre y cuando la dependencia-plugin está configurado antes de la antRun-plugin que serían ejecutados en primer lugar. Tenga en cuenta, el paquete es nuevo para preparar Maven 2.1, si estás en una versión más antigua que había necesidad de utilizar otra fase.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-lib</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>jar</type>
            <overWrite>false</overWrite>
          </artifactItem>
        </artifactItems>
        <!--unpack all three folders to the temporary location-->
        <includes>ReportEngine/lib/*,ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
        <outputDirectory>${project.build.directory}/temp-unpack</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
      </configuration>
    </execution>
  </executions>
</plugin>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>prepare-package</phase>
        <configuration>
          <tasks>
            <!--now copy the configuration and plugin sub-folders to WEB-INf/platform-->
            <copy todir="${project.build.directory}/WEB-INF/platform">
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/configuration"/>
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/plugins"/>
            </copy>
            <!--copy the lib sub-folder to WEB-INf/lib-->
            <copy todir="${project.build.directory}/WEB-INF/lib">
              <fileset dir="${project.build.directory}/temp-unpack/ReportEngine/lib"/>
            </copy>
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

Otros consejos

En realidad, no responder a mi propia pregunta, respondiendo a Rich vendedor arriba:)

Tratando de conseguir que esto funcione con mvn dependency:unpack, los documentos dicen que sacarlo del nodo ejecuciones. No estoy seguro si esa es la causa del resultado, pero esto termina con

WEB-INF/lib/ReportEngine/lib
WEB-INF/platform/ReportEngine/configuration
WEB-INF/platform/ReportEngine/plugins

básicamente la misma que mi intento inicial de la guerra plugin. No veo nada en la documentación para depedency-deshacer las maletas para asistir. Voy a tratar de nuevo tmrw.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>

      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>zip</type>
            <overWrite>false</overWrite>
            <!--may not be needed, need to check-->
            <outputDirectory>${project.build.directory}/WEB-INF/lib</outputDirectory>
            <includes>ReportEngine/lib/*</includes>
          </artifactItem>

          <artifactItem>
            <groupId>org.eclipse.birt</groupId>
            <artifactId>report-engine</artifactId>
            <version>2.3.2</version>
            <type>zip</type>
            <overWrite>false</overWrite>
            <!--may not be needed, need to check-->
            <outputDirectory>${project.build.directory}/WEB-INF/platform</outputDirectory>
            <includes>ReportEngine/configuration/*,ReportEngine/plugins/*</includes>
          </artifactItem>
        </artifactItems>
      </configuration>
</plugin>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top