Frage

Ich versuche, Maven zu bekommen einen Krieg mit der BIRT Laufzeit in einer nützlichen Position innerhalb des IST zu montieren.

Die BIRT-Laufzeit ist in der pom.xml als

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

Das gewünschte Ergebnis dieser Falle einer Überlagerung ist so etwas wie

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

Meine Overlay-Konfiguration sieht aus wie

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

Natürlich, wenn mvn war:exploded läuft ich sehe

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

Dies betrifft gleiche Art von Problem, keine Antwort http: // www.coderanch.com/t/447258/Ant-Maven-Other-Build-Tools/Maven-war-dependencies-moving-files

Bonuspunkte für den Hinweis auf, wie ich das ein bisschen aufzuräumen kann es alle Arbeiten aus WEB-INF/birt-runtime, indem

Edit:

Der Grund für die Standorte oben angegeben ist, dass sie die in http: / /wiki.eclipse.org/Servlet_Example_%28BIRT%29_2.1 und wenn ich mit der Tomcat-Installation zu imitieren diesen fritz, es scheint alles zu arbeiten. Ideal wäre es, wenn ich einfach die Zip in WEB-INF / birt-Laufzeit überlagern könnte und dann den Motor Config entsprechend eingestellt, aber ich habe das noch an der Arbeit nicht gefunden.

Beispiel:

engineConfig = new EngineConfig();
engineConfig.setEngineHome("WEB-INF/birt-runtime");
engineConfig.setPlatformContext(new PlatformServletContext(servletContext));
War es hilfreich?

Lösung

Update: Auf Wiederlesen die Frage, die ich erkennen, vermisste ich die Unterverzeichnisse von meinem Testprojekt aus, so natürlich ist es für mich gearbeitet, sorry für die

.

Soweit ich weiß, gibt es keinen Mechanismus, entweder im Krieg Overlay oder der Abhängigkeits-Plugin auspacken Unterordner von Artefakten in einem Verzeichnis und schließen Sie die übergeordneten Elemente des Pfades, beide werden Sie die volle relativ geben Pfad.

Sie können jedoch das auspacken Ziel verwenden Sie das Archiv in einen temporären Ordner zu entpacken, verwenden Sie dann die antrun-Plugin die erforderlichen Unterordner ihre letzte Ruhestätte zu kopieren.

Die folgende Konfiguration würde genau das tun (ich habe noch nicht getestet dies so Entschuldigungen, wenn es irgendwelche Auslassungen finden Sie in der Dokumentation für die genauen Details). Beachten Sie die Ausführungen in der gleichen Phase sind, aber solange die abhängigkeits Plugin vor der so konfiguriert ist, antrun-Plugin es zuerst ausgeführt würde. Hinweis: das prepare-Paket ist neu für Maven 2.1, wenn Sie auf einer älteren Version sind würden Sie eine andere Phase verwenden müssen.

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

Andere Tipps

Nicht wirklich meine eigene Frage zu beantworten, die Reaktion auf Rich-Verkäufer oben:)

Der Versuch, dies mit mvn dependency:unpack zur Arbeit zu kommen, sagen die Dokumente, um sie aus der Hinrichtungen Knoten. Nicht sicher, ob das die Ursache für das Ergebnis, aber das endet mit

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

im Grunde das gleiche wie meine erste Krieg-Plugin Versuch. Ich sehe nichts in der Dokumentation für depedency-auspacken zu unterstützen. Ich werde versuchen, wieder 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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top