Overlay BIRT Laufzeit in der richtigen SIND Standorte
-
20-09-2019 - |
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));
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>