How to build an EAR project with EJB and WAR using Maven?

前端 未结 2 1061
温柔的废话
温柔的废话 2021-02-04 16:42

I tried to create EAR Project with EJB and WAR but I have some problem. I created the main project from the Java EE 6 EAR Archetype:


    

        
相关标签:
2条回答
  • 2021-02-04 16:58

    I highly suggest that you understand how multi-module builds work. The Sonatype book has a great chapter describing in great detail.

    To build an EAR with an EJB and a WAR, you actually need three modules, for the EJB, WAR and EAR. The parent POM just holds everything together and has a packaging type of POM.

    So the parent pom.xml should look like this:

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.sonatype.mavenbook.multi</groupId>
        <artifactId>simple-parent</artifactId>
        <packaging>pom</packaging>
        <version>1.0</version>
        <name>Multi Chapter Simple Parent Project</name>
    
        <modules>
            <module>ejb-module</module>
            <module>war-module</module>
            <module>ear-module</module>
        </modules>
    </project>
    

    Then, each of the child POMs would look like this:

    ejb-module/pom.xml:

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.sonatype.mavenbook.multi</groupId>
            <artifactId>simple-parent</artifactId>
          <version>1.0</version>
        </parent>
        <artifactId>ejb-module</artifactId>
        <packaging>ejb</packaging>
    </project>
    

    war-module/pom.xml

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.sonatype.mavenbook.multi</groupId>
            <artifactId>simple-parent</artifactId>
            <version>1.0</version>
        </parent>
    
        <artifactId>war-module</artifactId>
        <packaging>war</packaging>
        <name>simple-webapp Maven Webapp</name>
        <dependencies>
            <dependency>
                <groupId>org.sonatype.mavenbook.multi</groupId>
                <artifactId>ejb-module</artifactId>
                <version>1.0</version>
            </dependency>
        </dependencies>
    </project>
    

    ear-module/pom.xml:

    <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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.sonatype.mavenbook.multi</groupId>
            <artifactId>simple-parent</artifactId>
            <version>1.0</version>
        </parent>
    
        <artifactId>ear-module</artifactId>
        <packaging>ear</packaging>
        <name>EAR module</name>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>2.10.1</version>
                    <configuration>
                        <ejbModule>
                            <groupId>org.sonatype.mavenbook.multi</groupId>
                            <artifactId>ejb-module</artifactId>
                            <bundleFilename>ejb-module.jar</bundleFilename>
                        </ejbModule>
                        <webModule>
                            <groupId>org.sonatype.mavenbook.multi</groupId>
                            <artifactId>war-module</artifactId>
                            <contextRoot>/foo</contextRoot>
                        </webModule>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    
    0 讨论(0)
  • 2021-02-04 17:12
    > 1. parent  QCforCC-parent : 
    
        <artifactId>QCforCC-parent</artifactId>
        <packaging>pom</packaging>
        ...
        ...
        <modules>
            <module>QCforCC-ear</module>
            <module>QCforCC-ejb</module>
            <module>QCforCC-war</module>
        </modules>
    
    > 2. QCforCC-ear :
    
    <artifactId>QCforCC-ear</artifactId>
    <packaging>ear</packaging>
    ...
    ...
     <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <configuration>
              <version>5</version>
              <displayName>XXXXXXXX</displayName>  
              <modules>
                 <webModule>             
                    <moduleId>WebModule_XXX</moduleId>
                    <groupId>${project.groupId}</groupId>
                    <artifactId>>QCforCC-war</artifactId>   
                   <contextRoot>XXXXXXXX</contextRoot>
                 </webModule>  
                    <jarModule>
                                <groupId>${project.groupId}</groupId>
                                <artifactId>QCforCC-ejb</artifactId>
                     </jarModule>            
              </modules>  
            </configuration>
          </plugin>
        </plugins>
    
    0 讨论(0)
提交回复
热议问题