2012-08-23 14 views
6

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.

  1. Il contextRoot fornito non è corretto in application.xml, al posto del MyApp specificato viene invece visualizzato il nome predefinito di MyApp.Web.
  2. 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.

+0

Sembra che ignori completamente la mia configurazione. Qualche idea perché ?? – mrswadge

risposta

9

L'ho risolto, come al solito, si è verificato un errore dell'utente.

Stranamente produceva il file EAR in modo abbastanza corretto, anche se il mio plug-in non era configurato correttamente.

ho sostituito ...

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

con ...

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

Poi cambiato ...

<includeLibInApplicationXml>true</includeLibInApplicationXml> 

a ...

<includeInApplicationXml>true</includeInApplicationXml> 

Poi improvvisamente ha fatto quello che intendevo fare in primo luogo.

Il mio ultimo pom.xml sembrava così quando ho deciso che volevo includere tutti i barattoli automaticamente.

<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's 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> 
+0

L'ultimo esempio non usa più 'jarModule'. Hai avuto problemi con questo? –

+0

@ SérgioMichels No, non era correlato al problema. – mrswadge

1

Grazie mille, sono alla ricerca di una soluzione a questo problema da qualche ora. :) Aggiungerò il mio pom nel caso in cui questo potrebbe aiutare qualcun altro.

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