2012-08-23 12 views
6

मैं shows how to add third-party libraries to the generated application.xml पर मेवेन-कान-प्लगइन साइट पर उदाहरण का पालन कर रहा हूं। हालांकि, ऐसा लगता है कि यह काम नहीं कर रहा है। इसी तरह वेब मॉड्यूल contextRoot को अनदेखा किया जा रहा है।मेवेन-कान-प्लगइन में jarModule शामिल नहीं है .xml

documentation के अनुसार जो मैं करने की कोशिश कर रहा हूं वह पूरी तरह से संभव होना चाहिए।

एक वेब मॉड्यूल के संदर्भ जड़ contextRoot पैरामीटर का उपयोग कर अनुकूलित किया जा सकता है।

कृपया ध्यान दें कि तृतीय पक्ष लाइब्रेरी (अर्थात JarModule) उत्पन्न application.xml में शामिल नहीं हैं (केवल EJB-ग्राहक एक जावा प्रविष्टि में शामिल होना चाहिए)। हालांकि, में जेनर निर्भरता को निर्दिष्ट करके लागू किया जा सकता है InApplicationXml ध्वज

मेरे पास निम्नलिखित अनुप्रयोग है जब यह मेरे 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. आपूर्ति की गई रूट रूट application.xml में सही नहीं है, इसके बजाय MyApp.Web का डिफ़ॉल्ट नाम निर्दिष्ट MyApp के बजाय आउटपुट है।
  2. निर्दिष्ट org.slf4j jarModule पूरी तरह से application.xml से अनुपलब्ध है।

मैं क्या गलत कर रहा हूं?

मेवेन से डीबग नीचे दिखाया गया है।

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

पीएस मैंने मेवेन-कान-प्लगइन टैग बनाने की कोशिश की, लेकिन यह मुझे नहीं जाने देगी क्योंकि मैं काफी सम्मानित नहीं हूं! अगर कोई ऐसा कर सकता है तो मैं आभारी रहूंगा।

+0

यह पूरी तरह से मेरी कॉन्फ़िगरेशन को पूरी तरह से अनदेखा कर रहा है। कोई विचार क्यों ?? – mrswadge

उत्तर

9

मैंने सामान्य रूप से इसे काम किया, यह उपयोगकर्ता त्रुटि थी।

आश्चर्यजनक रूप से यह ईएआर फ़ाइल का उत्पादन बहुत अधिक सही ढंग से कर रहा था, भले ही मेरी प्लगइन ठीक से कॉन्फ़िगर नहीं की गई थी।

मैं बदल दिया ...

<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

@ सेर्गियो मिशेलस नो, जो इस मुद्दे से संबंधित नहीं था। – 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> 
संबंधित मुद्दे