Ich habe das Beispiel auf der maven-ear-plugin Seite verfolgt, dass shows how to add third-party libraries to the generated application.xml. Es scheint jedoch nicht zu funktionieren, wie ich es erwartet hatte. Ebenso wird das Webmodul contextRoot ignoriert.maven-ear-plugin enthält kein jarModule in application.xml
Nach der documentation was ich versuche zu tun, sollte durchaus möglich sein.
Der Kontext Wurzel einer Web-Modul können Parameter mit den ContextRoot angepasst werden.
Bitte beachten Sie, dass Drittanbieter-Bibliotheken (das heißt JarModule) nicht im generierten application.xml enthielt (nur ejb-Client in einem Java-Eintrag enthalten sein soll). Eine in der generierten application.xml kann jedoch durch Angabe der includeInApplicationXml Flag enthalten sein.
Ich habe die folgende Ausgabe, wenn es das Build in meiner application.xml ausführt.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
"http://java.sun.com/dtd/application_1_3.dtd">
<application>
<display-name>MyApp.EAR</display-name>
<module>
<ejb>MyApp.jar</ejb>
</module>
<module>
<web>
<web-uri>MyApp.war</web-uri>
<context-root>/MyApp.Web</context-root>
</web>
</module>
</application>
Aus der folgenden Maven-Konfiguration (pom.xml).
...
<modelVersion>4.0.0</modelVersion>
<groupId>com.blah</groupId>
<artifactId>MyApp.EAR</artifactId>
<version>1.0</version>
<packaging>ear</packaging>
<build>
<plugins>
<plugin>
<groupId>maven-ear-plugin</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.7</version>
<configuration>
<applicationName>MyApp</applicationName>
<modules>
<ejbModule>
<groupId>com.blah</groupId>
<artifactId>MyApp.EJB</artifactId>
</ejbModule>
<webModule>
<groupId>com.blah</groupId>
<artifactId>MyApp.Web</artifactId>
<contextRoot>MyApp</contextRoot>
</webModule>
<jarModule>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<includeLibInApplicationXml>true</includeLibInApplicationXml>
</jarModule>
</modules>
<archive>
<manifestEntries>
<WebLogic-Application-Version>${weblogic.version}</WebLogic-Application-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- web and ejb modules -->
<dependency>
<groupId>com.blah</groupId>
<artifactId>MyApp.EJB</artifactId>
<version>1.0</version>
<type>ejb</type>
</dependency>
<dependency>
<groupId>com.blah</groupId>
<artifactId>MyApp.Web</artifactId>
<version>1.0</version>
<type>war</type>
</dependency>
</dependencies>
...
Es ist sofort offensichtlich, dass die application.xml nicht wie vorgesehen generiert wird.
- Das angegebene contextRoot ist in der Datei application.xml nicht korrekt, stattdessen wird anstelle der angegebenen MyApp der Standardname MyApp.Web ausgegeben.
- Das angegebene jarModul org.slf4j fehlt vollständig in der Datei application.xml.
Was mache ich falsch?
Debug von Maven wird unten gezeigt.
[DEBUG] -----------------------------------------------------------------------
[DEBUG] Goal: org.apache.maven.plugins:maven-ear-plugin:2.4.2:generate-application-xml (default-generate-application-xml)
[DEBUG] Style: Regular
[DEBUG] Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<description>${project.description}</description>
<displayName>${project.artifactId}</displayName>
<encoding default-value="UTF-8"/>
<generatedDescriptorLocation>${project.build.directory}</generatedDescriptorLocation>
<includeLibInApplicationXml default-value="false"/>
<project>${project}</project>
<version default-value="1.3"/>
<workDirectory>${project.build.directory}/${project.build.finalName}</workDirectory>
</configuration>
P.S. Ich habe versucht, das maven-ear-plugin-Tag zu erstellen, aber es würde mich nicht zulassen, da ich nicht seriös genug bin! Wenn jemand das schaffen könnte wäre ich dankbar.
Es scheint, meine Konfiguration vollständig zu ignorieren. Irgendwelche Ideen warum? – mrswadge