2011-01-21 7 views
20

जब मैं मैवेन के साथ एक युद्ध पैकेज बनाता हूं, निर्देशिका "src/main/resource" निर्देशिका के अंतर्गत फ़ाइलों/निर्देशिकाओं को/WEB-INF के बजाय/WEB-INF/कक्षाओं में कॉपी किया जाता है। मैं उन्हें/WEB-INF में कॉपी कैसे कर सकता हूं?मेवेन: वेब-आईएनएफ में कॉपी किए गए संसाधनों के साथ युद्ध पैकेज कैसे प्राप्त करें?

धन्यवाद, रैंड

अद्यतन: मेरे पोम में अब मैं इस का उपयोग करें:

<plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <!-- here the phase you need --> 
        <phase>war</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>myapp/target/WEB-INF</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/resources</directory> 
           <filtering>true</filtering> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

और मैं साथ mvn का शुभारंभ:

mvn -Dmaven.test.skip = सही स्वच्छ पैकेज संसाधन: प्रति-संसाधन

लेकिन मुझे मिल गया: [जानकारी] एक या अधिक आवश्यक प्लगइन मापदंडों के लिए याद आ रही/अमान्य हैं 'संसाधन: कॉपी-संसाधन'

[0] प्लगइन 'Maven-संसाधन-प्लगइन' के लिए निम्नलिखित निर्दिष्ट परिभाषा के अंदर:

... VALUE ।

[1] प्लगइन 'Maven-संसाधन-प्लगइन' के लिए परिभाषा के अंदर निम्न निर्दिष्ट करें:

... मूल्य ।

मैवेन 2.2 का उपयोग कर रहा हूं और स्निपेट मूल रूप से दस्तावेज के समान है?

+0

में कोई अतिरिक्त कॉन्फ़िगरेशन के बिना स्वचालित रूप से काम करेगा 'संसाधन: प्रति-संसाधन' लक्ष्य नहीं चलाएं, यह स्वचालित रूप से चरण 'प्रति-संसाधन' चरण में शामिल है (मेरे उत्तर में नीचे) – coubeatczech

उत्तर

27

या तो outputDirectoryresources:resources प्लगइन के पैरामीटर को कॉन्फ़िगर करें, या अपनी फ़ाइलों को src/main/webapp/WEB-INF/ निर्देशिका के अंतर्गत रखें। resource plugin

संपादित करें:

यह विन्यास मेरे लिए काम कर रहा है:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.2</version> 
    <executions> 
     <execution> 
     <id>default-copy-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <overwrite>true</overwrite> 
      <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/</outputDirectory> 
      <resources> 
      <resource> 
       <directory>${project.basedir}/src/main/resources</directory> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

आप प्रपत्र somePhase या एक लक्ष्य somePlugin:someGoal में एक चरण चला सकते हैं। चरण के आविष्कार अंतराल [मान्य, चरण] में चरणों पर लगाए गए सभी प्लगइन्स लक्ष्यों का आह्वान करेंगे, इसलिए उन्हें स्पष्ट रूप से कॉल करने की आवश्यकता नहीं है।

+0

उत्तर के लिए धन्यवाद, – Randomize

+0

से ऊपर दिए गए अपडेट में मेरा उत्तर देखें, $ 'project {artifactId} - $ {project.version} के बजाय' $ {project.build.finalName} 'का उपयोग कर सकते हैं। आर्टिफैक्ट का नाम। – ivanjovanovic

24

वेब संसाधन जावा संसाधनों के समान नहीं हैं, जिन्हें क्लासपाथ में रखा जाना चाहिए। वेब संसाधनों को युद्ध प्लगइन के माध्यम से संसाधित किया जाता है और इसे src\main\webapp\WEB-INF\ में रखा जाना चाहिए। इस मामले में, यह pom.xml

+0

लेकिन, 'जावा संसाधन' से कैसे निपटें, अगर यह अपने आवश्यक स्थान पर ऑटो तैनात नहीं है? – Eddy

+0

@Eddy अगर इसे "आवश्यक स्थान" में तैनात नहीं किया गया है, तो शायद इसका मतलब है कि आप इसे स्रोत कोड के गलत स्थान पर डाल देते हैं।अधिक जानकारी दें। – kan

+0

आप सही हैं! इस मामले में: जब मैवेन का उपयोग करते हैं और 'एमवीएन क्लीन' चलाते हैं। तो 'src/main/resource' के बजाय' src/main/java' के अंतर्गत संसाधन डालते समय मैवेन मेरे लिए पुन: नियोजित नहीं करेगा। मैं ग्रहण का उपयोग कर रहा हूँ। – Eddy