Maven-ear-plugin does not include jarModule in application.xml

I follow the example on the maven-ear-plugin site, which shows how to add third-party libraries to the generated application.xml . However, it does not seem to work as I expected. In the same way, the contextRoot web module is ignored .

According to the documentation , what I'm trying to do should be completely possible.

The web module context root can be configured using contextRoot.

Please note that third-party libraries (e.g. JarModule) are not included in the generated application.xml (only ejb-client should be included in the java entry). However, the jar dependency in the generated application.xml can be enabled by specifying the includeInApplicationXml flag .

I have the following output when it builds in my application.xml application.

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

From the following maven configuraton (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> ... 

It’s immediately obvious that application.xml is not created as I intended.

  • An invalid contextRoot is specified in the application.xml application, instead of which MyApp.Web is displayed instead of MyApp.
  • The specified jarModule org.slf4j is completely missing from application.xml.

What am I doing wrong?

Debugging from Maven is shown below.

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

PS I tried to create the maven-ear-plugin tag, but that didn’t allow me, because I am not authoritative enough! If someone could create this, I would be grateful.

+6
source share
2 answers

I worked as usual, it was a user error.

It is strange that he made the EAR file quite correctly, although my plugin was not configured properly.

I replaced ...

 <groupId>maven-ear-plugin</groupId> <artifactId>maven-ear-plugin</artifactId> 

from...

 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> 

Then it changed ...

 <includeLibInApplicationXml>true</includeLibInApplicationXml> 

to ...

 <includeInApplicationXml>true</includeInApplicationXml> 

Then he did what I intended to do first.

My last pom.xml looked like I decided that I want all banks to be turned on automatically.

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.blah</groupId> <artifactId>MyApp.EAR</artifactId> <version>1.0</version> <packaging>ear</packaging> <properties> <weblogic.version>10.3</weblogic.version> <weblogic.version.minor>${weblogic.version}.4</weblogic.version.minor> <weblogic.host>***</weblogic.host> <weblogic.port>***</weblogic.port> <weblogic.username>***</weblogic.username> <weblogic.password>***</weblogic.password> </properties> <build> <finalName>MyApp</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <version>2.7</version> <configuration> <applicationName>MyApp</applicationName> <includeLibInApplicationXml>true</includeLibInApplicationXml> <modules> <ejbModule> <groupId>com.blah</groupId> <artifactId>MyApp.EJB</artifactId> </ejbModule> <webModule> <groupId>com.blah</groupId> <artifactId>MyApp.Web</artifactId> <contextRoot>MyApp</contextRoot> </webModule> </modules> <archive> <manifestEntries> <WebLogic-Application-Version>${weblogic.version}</WebLogic-Application-Version> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>com.oracle.weblogic</groupId> <artifactId>weblogic-maven-plugin</artifactId> <version>10.3.4</version> <configuration> <adminurl>t3://${weblogic.host}:${weblogic.port}</adminurl> <user>${weblogic.username}</user> <password>${weblogic.password}</password> <upload>true</upload> <action>deploy</action> <remote>false</remote> <verbose>true</verbose> <source>${project.build.directory}/${project.build.finalName}.${project.packaging}</source> <name>${project.build.finalName}</name> </configuration> <executions> <execution> <phase>install</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> </plugins> <pluginManagement> <plugins> <!--This plugin configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ear-plugin</artifactId> <versionRange>[2.7,)</versionRange> <goals> <goal>generate-application-xml</goal> </goals> </pluginExecutionFilter> <action> <ignore></ignore> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build> <dependencies> <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> </project> 
+9
source

Thank you very much, for several hours we have been looking for a solution to this problem. :) Will there be an announcement of my help in case this can help someone else.

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>appletree.be-multi</artifactId> <groupId>be.appletree</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>appletree.be-ear</artifactId> <packaging>ear</packaging> <dependencies> <dependency> <groupId>be.appletree</groupId> <artifactId>appletree.be-domain</artifactId> <version>1.0-SNAPSHOT</version> <type>jar</type> </dependency> <dependency> <groupId>be.appletree</groupId> <artifactId>appletree.be-ejb</artifactId> <version>1.0-SNAPSHOT</version> <type>ejb</type> </dependency> <dependency> <groupId>be.appletree</groupId> <artifactId>appletree.be-web</artifactId> <version>1.0-SNAPSHOT</version> <type>war</type> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-ear-plugin</artifactId> <version>2.8</version> <configuration> <modules> <jarModule> <groupId>be.appletree</groupId> <artifactId>appletree.be-domain</artifactId> <includeInApplicationXml>true</includeInApplicationXml> </jarModule> <webModule> <groupId>be.appletree</groupId> <artifactId>appletree.be-web</artifactId> </webModule> <ejbModule> <groupId>be.appletree</groupId> <artifactId>appletree.be-ejb</artifactId> </ejbModule> </modules> </configuration> </plugin> </plugins> </build> </project> 
+1
source

Source: https://habr.com/ru/post/923561/


All Articles