2015-10-07 12 views
6

Ho provato a creare EAR Project con EJB e WAR ma ho qualche problema. creo il progetto principale di IntelliJ IDEA da Archetipo:Come creare un progetto EAR con EJB e WAR in Maven?

<dependency> 
    <groupId>org.codehaus.mojo.archetypes</groupId> 
    <artifactId>ear-javaee6</artifactId> 
    <version>1.5</version> 
</dependency> 

Poi ho creato modulo EJB da Archetipo:

<dependency> 
    <groupId>org.codehaus.mojo.archetypes</groupId> 
    <artifactId>ejb-javaee6</artifactId> 
    <version>1.5</version> 
</dependency> 

E poi ho creato il secondo modulo da Archetipo:

<dependency> 
    <groupId>javax.faces</groupId> 
    <artifactId>javax.faces-war-archetype</artifactId> 
    <version>2.2</version> 
</dependency> 

Poi ho aggiunto le dipendenze al pom.xml principale:

<!-- Define the versions of your ear components here --> 
<dependencies> 
    <dependency> 
     <groupId>QCforCC-main</groupId> 
     <artifactId>QCforCC-ejb</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <type>ejb</type> 
    </dependency> 
    <dependency> 
     <groupId>QCforCC-main</groupId> 
     <artifactId>QCforCC-war</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <type>war</type> 
    </dependency> 
</dependencies> 

E poi ho provato a costruire il progetto - usando maven clean e instal. ma ho un errore:

[ERROR] The projects in the reactor contain a cyclic reference: Edge between 'Vertex{label='QCforCC-main:QCforCC-war:1.0-SNAPSHOT'}' and 'Vertex{label='QCforCC-main:QCforCC-ejb:1.0-SNAPSHOT'}' introduces to cycle in the graph QCforCC-main:QCforCC-ejb:1.0-SNAPSHOT --> QCforCC-main:QCforCC-war:1.0-SNAPSHOT --> QCforCC-main:QCforCC-ejb:1.0-SNAPSHOT -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectCycleException

Process finished with exit code 1

e auricolare pom.xml ho:

<modules> 
    <module>QCforCC-ejb</module> 
    <module>QCforCC-war</module> 
</modules> 
<packaging>pom</packaging> 

Ma se cambio <packaging>pom</packaging> a <packaging>ear</packaging> errore spettacolo IDEA nel popup:

Some problems were encountered while processing the POMs: [WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-ear-plugin @ line 41, column 21 [ERROR] 'packaging' with value 'ear' is invalid. Aggregator projects require 'pom' as packaging. @ line 12, column 16

risposta

8

I altamente suggerisco di capire come funzionano le build multi-modulo. Il libro Sonatype ha un ottimo chapter che descrive in grande dettaglio.

Per creare un EAR con un EJB e un WAR, è effettivamente necessario tre moduli, per EJB, WAR ed EAR. Il padre POM tiene semplicemente tutto insieme e ha un tipo di confezione di POM.

Così il pom.xml genitore dovrebbe assomigliare a questo:

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

Poi, ciascuna delle POM bambino sarebbe simile a questa:

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> 

guerra-modulo/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> 

orecchio-modulo/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

qual è e ? – Pavel

+1

Fare riferimento alla documentazione per il plug-in maven-ear qui: https://maven.apache.org/plugins/maven-ear-plugin/modules.html – sh0rug0ru

+0

Manufatto QCforCC-ear: ejb exploded: java.io.IOException: com.sun.enterprise.admin.remote.RemoteFailureException: tipo di archivio C: \ app \ QCforCC-mainApp \ QCforCC-ear \ target \ QCforCC-ear-1.0-SNAPSHOT non è stato riconosciuto – Pavel

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