2012-08-23 7 views
6

나는 maven-ear-plugin 사이트의 예제 인 shows how to add third-party libraries to the generated application.xml을 따라 왔습니다. 그러나 예상대로 작동하지 않는 것 같습니다. 마찬가지로 웹 모듈 contextRoot도 무시됩니다.maven-ear-plugin이 jarModule을 application.xml에 포함하지 않았습니다.

documentation에 따르면 전적으로 가능해야합니다.

웹 모듈의 컨텍스트 루트는 이 컨텍스트 매개 변수를 사용하여 사용자 정의 할 수 있습니다.

생성 된 application.xml을 포함 하지 않습니다 (단지 EJB 클라이언트는 자바 항목에 포함 해야한다)을 제 3 자의 라이브러리 (즉 JarModule)을 유의하시기 바랍니다. 그러나 includeInApplicationXml 플래그을 지정하여 jar 종속성을 생성 된 application.xml에 에 포함시킬 수 있습니다.

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

다음의 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> 
... 

는 내가 의도 한대로 application.xml을 생성하고 있지 않은지 즉시 분명하다.

  1. 제공되는 contextRoot가 application.xml에서 올바르지 않습니다. 대신 지정된 MyApp 대신 MyApp.Web의 기본 이름이 출력됩니다.
  2. 지정된 org.slf4j jarModule이 application.xml에서 완전히 누락되었습니다.

내가 뭘 잘못하고 있니?

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. 나는 maven-ear-plugin 태그를 만들려고했지만 충분히 평판이 나지 않는 한 나를 허락하지 않을 것이다! 누군가가 그것을 만들 수 있다면 나는 감사 할 것입니다.

+0

완전히 내 구성을 완전히 무시하는 것 같습니다. 어떤 아이디어? – mrswadge

답변

9

평소와 같이 사용자가 실수로 해결했습니다.

이상하게도 플러그인이 제대로 구성되지 않았지만 이상하게도 EAR 파일을 올바르게 생성하고있었습니다. ...와

나는 대체 ...

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

다음 변경
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-ear-plugin</artifactId> 

...

<includeLibInApplicationXml>true</includeLibInApplicationXml> 

에 ...

<includeInApplicationXml>true</includeInApplicationXml> 

갑자기 내가 처음에 의도했던대로했습니다. 나는 모든 병의이 자동으로 포함하기로 결심으로

내 최종 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/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

마지막 예제는 더 이상'jarModule'을 사용하지 않습니다. 그게 문제가 있니? –

+0

는 SérgioMichels 아니 @, 즉이 문제와 관련되지 않았습니다. – mrswadge

1

감사합니다. 몇 시간 동안이 문제에 대한 해결책을 찾아 왔습니다. :)이 너무 다른 사람을 도울 수있는 경우에 윌 광고 내 치어.

<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> 
관련 문제