He estado siguiendo el ejemplo en el sitio de maven-ear-plugin que shows how to add third-party libraries to the generated application.xml. Sin embargo, no parece estar funcionando como esperaba. De forma similar, se está ignorando el módulo web contextRoot.maven-ear-plugin no incluye jarModule en application.xml
De acuerdo con documentation, lo que estoy tratando de hacer debería ser completamente posible.
La raíz de contexto de un módulo web puede ser personalizado utilizando el parámetro contextRoot.
Tenga en cuenta que las bibliotecas de terceros (es decir, JarModule) no están incluidos en el aplicacion.xml generada (sólo ejb-cliente debe ser incluido en una entrada de java). Sin embargo, se puede incluir una dependencia de jar en el archivo application.xml generado al especificar includeInApplicationXml flag.
Tengo el siguiente resultado cuando ejecuta la compilación en mi 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>
De la siguiente configuración maven (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 inmediatamente obvio que la aplicación.xml no se está generando como pretendía.
- El contextRoot suministrado no es correcto en la aplicación.xml, en su lugar se emite el nombre predeterminado de MyApp.Web en lugar de la MyApp especificada.
- El org.slf4j jarModule especificado falta por completo de la aplicación.xml.
¿Qué estoy haciendo mal?
Debug de Maven se muestra a continuación.
[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. Traté de crear la etiqueta maven-ear-plugin, pero no me dejaba porque no soy lo suficientemente confiable. Si alguien pudiera crear eso, estaría agradecido.
Parecería estar ignorando por completo mi configuración por completo. ¿Alguna idea de por qué? – mrswadge