Ho seguito l'esempio sul sito di plug-ear-earv che shows how to add third-party libraries to the generated application.xml. Tuttavia, non sembra funzionare come mi aspettavo. Allo stesso modo il modulo web contextRoot viene ignorato.maven-ear-plugin non include jarModule in application.xml
Secondo lo documentation ciò che sto cercando di fare dovrebbe essere interamente possibile.
La radice contesto di un modulo Web potrebbe essere personalizzato utilizzando il parametro contextRoot.
prega di notare che le librerie di terze parti (ossia JarModule) non sono incluso nel application.xml generato (solo ejb-client dovrebbe essere inclusi in una voce di Java). Tuttavia, una dipendenza jar potrebbe essere inclusa nel file application.xml generato specificando il flag includeInApplicationXml.
Ho il seguente output quando esegue la compilazione nel mio application.xml.
<?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>
Dalla seguente configurazione di sistema (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>
...
È ovvio che il file application.xml non viene generato come previsto.
- Il contextRoot fornito non è corretto in application.xml, al posto del MyApp specificato viene invece visualizzato il nome predefinito di MyApp.Web.
- org.slf4j jarModule specificato manca completamente da application.xml.
Cosa sto sbagliando?
Di seguito è indicato il debug di Maven.
[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. Ho provato a creare il tag maven-ear-plugin, ma non me lo permetteva dato che non sono abbastanza affidabile! Se qualcuno potesse crearlo sarei grato.
Sembra che ignori completamente la mia configurazione. Qualche idea perché ?? – mrswadge