Question

Je suis en train de se Maven pour assembler une guerre avec le moteur d'exécution de BIRT dans un endroit utile dans la guerre.

Le moteur d'exécution de BIRT est dans le pom.xml comme

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

Le résultat souhaité de cette superposant est quelque chose comme

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

Ma configuration de superposition ressemble

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

Bien sûr, lors de l'exécution mvn war:exploded je vois

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

Cela se rapporte, même genre de problème, pas de réponse http: // www.coderanch.com/t/447258/Ant-Maven-Other-Build-Tools/Maven-war-dependencies-moving-files

Les points bonus pour remarquer comment je peux ranger ce un peu en ayant tout le travail de l'intérieur WEB-INF/birt-runtime

Edit:

La raison pour les endroits indiqués ci-dessus sont qu'ils correspondent à ceux indiqués dans http: / /wiki.eclipse.org/Servlet_Example_%28BIRT%29_2.1 et quand je fritz avec l'installation de Tomcat pour imiter ce, tout cela semble fonctionner. Il serait idéal si je pouvais simplement superposer le zip dans WEB-INF / BIRT-exécution, puis régler correctement la configuration du moteur, mais je n'ai pas trouvé que de travailler encore.

Par exemple:

engineConfig = new EngineConfig();
engineConfig.setEngineHome("WEB-INF/birt-runtime");
engineConfig.setPlatformContext(new PlatformServletContext(servletContext));
Était-ce utile?

La solution

Mise à jour:. En relisant la question que je me rends compte que je manqué les sous-répertoires de mon projet de test, donc bien sûr, il a travaillé pour moi, désolé

Pour autant que je sais qu'il existe aucun mécanisme ni dans la superposition de la guerre ou la dépendance-plugin pour décompresser les sous-dossiers d'objets dans un répertoire et d'exclure les éléments parents du chemin, les deux vont vous donner le plein rapport chemin d'accès.

Vous pouvez toutefois utiliser l'objectif Déballez pour décompresser l'archive dans un dossier temporaire, puis utilisez la balise antrun-plugin pour copier les sous-dossiers nécessaires à leur lieu de repos.

La configuration suivante ferait juste que (je ne l'ai pas encore testé cette sorte d'excuses s'il y a des omissions, consultez la documentation pour les détails exacts). Notez que les exécutions sont dans la même phase, mais aussi longtemps que le plug-in de dépendance est configuré avant la antrun-plugin il serait exécuté en premier. Remarque, la préparation-paquet est nouveau pour Maven 2.1, si vous êtes sur une version plus ancienne, vous aurez besoin d'utiliser une autre phase.

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

Autres conseils

Pas vraiment répondre à ma propre question, en réponse à Rich Vendeur ci-dessus:)

Essayer d'obtenir que cela fonctionne avec mvn dependency:unpack, les docs disent de le sortir du nœud exécutions. Je ne sais pas si cela est la cause du résultat, mais cela finit par

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

fondamentalement la même que ma tentative-plugin guerre initiale. Je ne vois rien dans la documentation pour depedency-déballer pour aider. Je vais essayer à nouveau 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top