2012-07-31 15 views
17

यहाँ में विधानसभा रूट पथMaven को कैसे कॉन्फ़िगर करें: जार

<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>org.springframework.webflow</groupId> 
    <artifactId>spring-js-resources-thin</artifactId> 
    <version>2.2.1.RELEASE</version> 
    <name>Spring js lib</name> 
    <description>Spring javascript library without dojo</description> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2.1</version> 
       <configuration> 
        <descriptors> 
         <descriptor>src/main/assembly/assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

pom.xml है और यहाँ assembly.xml

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

समस्या है, हर मैं उत्पन्न खोलने जार फ़ाइल (वसंत-जेएस-संसाधन-पतली-2.2.1.RELEASE-js-jar.jar), रूट फ़ोल्डर को हमेशा artifactid-version (वसंत-जेएस-संसाधन-पतली-2.2.1.RELEASE) के रूप में नामित किया जाता है, फिर META-INF।

मुझे आश्चर्य है कि मैं फ़ाइल नाम artifactid-version.jar के साथ जार फ़ाइल बना सकता हूं, लेकिन क्लास पथ में artifactid-version के बिना, मैवेन रिपोजिटरी में हर जार की तरह। मुझे लगता है कि <outputDirectory> नाम देने का विकल्प या तरीका होना चाहिए।

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>.</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

और Maven-जार-प्लगइन का उपयोग कर के बारे में सुझाव बहुत है:

+1

क्या आपने जार सृजन के लिए 'मेवेन-जार-प्लगइन' का उपयोग करने का प्रयास किया है? –

उत्तर

39

आप Maven-विधानसभा-प्लगइन नहीं बताने के लिए संग्रह के भीतर आधार निर्देशिका जो का उपयोग करके प्राप्त किया जा सकता है शामिल करने के लिए निम्नलिखित है अच्छा, क्योंकि यह थोड़ा सा दिखता है कि आप मेवेन-असेंबली-प्लगइन का दुरुपयोग कर रहे हैं।

मैवेन-असेंबली-प्लगइन के नवीनतम संस्करणों में आपको रूट फ़ोल्डर के रूप में . होना चाहिए। यदि आप / का उपयोग करते हैं तो आपको एक चेतावनी मिल जाएगी।

+0

हाँ! यही वही है जो मुझे चाहिए। धन्यवाद। – Dreamer

3

इस तरह की असेंबली में तत्व जोड़ें।

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <baseDirectory>myBaseDir</baseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

यदि आप <includeBaseDirectory> बंद कर देते हैं तो अपने संग्रह किसी भी जड़ नहीं होगा। तो यह आप जो चाहते हैं उस पर निर्भर करता है। उदाहरण के लिए, मैं अपनी ज़िप फ़ाइलों को प्राथमिक निर्देशिका प्राप्त करने के लिए पसंद करता हूं ताकि यह अनजिप करने से पहले डीआईआर और सीडी बनाने में भूल जाए, तो यह गलती से किसी निर्देशिका को प्रदूषित नहीं करता है। बहुत अधिक सुविधाजनक भी।

संबंधित मुद्दे