Domanda

Sto cercando di Maven per assemblare una guerra con il runtime BIRT in una posizione utile all'interno della guerra.

Il tempo di esecuzione BIRT è nel pom.xml come

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

Il risultato desiderato di sovrapposizione questo è qualcosa di simile

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

La mia configurazione di sovrapposizione sembra

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

Naturalmente, quando si esegue mvn war:exploded sto vedendo

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

Ciò si riferisce, stesso tipo di problema, nessuna risposta http: // www.coderanch.com/t/447258/Ant-Maven-Other-Build-Tools/Maven-war-dependencies-moving-files

I punti di bonus per aver ricordato come posso rimettere in ordine questo un po 'facendo funzionare il tutto dal di dentro WEB-INF/birt-runtime

Modifica:

La ragione per le posizioni di cui sopra sono che corrispondono a quelle indicate nel http: / /wiki.eclipse.org/Servlet_Example_%28BIRT%29_2.1 e quando ho Fritz con l'installazione di Tomcat di imitare questo, tutto sembra funzionare. Sarebbe l'ideale se potessi semplicemente sovrapporre la zip in WEB-INF / BIRT-runtime e quindi impostare la configurazione del motore in modo appropriato, ma non ho trovato che per funzionare ancora.

Esempio:

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

Soluzione

Aggiornamento:. Rileggendo la domanda che mi rendo conto che ho perso le sottodirectory dal mio progetto di test, così naturalmente ha funzionato per me, mi dispiace per quello

Per quanto ne so non esiste alcun meccanismo sia la sovrapposizione guerra o la dipendenza-plugin per decomprimere le sottocartelle di manufatti a una directory ed escludere gli elementi principali del percorso, sia stanno per dare il pieno rispetto percorso.

È possibile comunque utilizzare l'obiettivo di decompressione per decomprimere l'archivio in una cartella temporanea, quindi utilizzare il antrun-plugin per copiare le sottocartelle necessarie ai loro luoghi di riposo.

La seguente configurazione potrebbe fare proprio questo (non ho ancora testato questo modo scuse se ci sono omissioni, vedere la documentazione per avere maggiori dettagli). Nota le esecuzioni sono nella stessa fase, ma fino a quando la dipendenza-plugin è configurato prima della antrun-plugin che sarebbero stati giustiziati prima. Si noti, la preparazione pacchetto è nuovo per Maven 2.1, se siete su una versione precedente avresti bisogno di utilizzare un'altra 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>

Altri suggerimenti

Non proprio rispondendo alla mia domanda, rispondendo alle Rich Venditore sopra:)

Cercando di arrivare a questo lavoro con mvn dependency:unpack, i documenti dicono di portarlo fuori del nodo esecuzioni. Non sono sicuro se questo è la causa del risultato, ma questo finisce con

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

fondamentalmente lo stesso come il mio tentativo di guerra-plug iniziale. Io non vedo nulla nella documentazione per di dipendenze-unpack per assistere. Cercherò di nuovo 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top