2013-05-04 6 views
18

संकलित करते समय एक टेक्स्ट फ़ाइल को लक्षित फ़ोल्डर में ले जाएं मेरे पास हाल ही में the question का थोड़ा अलग संस्करण है। मैं, जबकि वहाँ pom.xml है कि मैं अन्य पुस्तकालयों आयात करने के लिए उपयोग करें Netbeans 7.3, के तहत एक Maven परियोजना जो इमारत विकल्पों को कॉन्फ़िगर करने के लिए किसी भी build.xml फ़ाइल नहीं है है। अब, मेरे पास एक टेक्स्ट फ़ाइल है (मान लें textfile.txt) में प्रोजेक्ट फ़ोल्डर में संग्रहीत नेटबीन्स 7.3, उदा।मैवेन प्रोजेक्ट

project folder 
    textfile.txt 
    src 
    package 
    package.subpackage 
     MyClass.java 

जब मैं संकलन मैं कहाँ जार फाइल में डाल दिया है एक target फ़ोल्डर, उदा मिल

project folder 
    textfile.txt 
    target 
    classes 
    generated-sources 
    ....etc 
    test-classes 
    MyProject.jar 
    src 
    package 
    package.subpackage 
     MyClass.java 

मैवेन प्रोजेक्ट संकलित करते समय मैं लक्ष्य फ़ोल्डर के अंतर्गत फ़ाइल textfile.txt को कॉपी कैसे कर सकता हूं?

उत्तर

28

फाइलों को src/main/resources में डालने का पहला तरीका है जो अनुपालन संसाधनों को संग्रहीत करने के लिए समर्पित फ़ोल्डर है, यानी जार फ़ाइल (जैसे आइकन के लिए छवियां) में शामिल संसाधन।

यदि आपको जार के साथ कॉन्फ़िगरेशन फ़ाइल को वितरित करने की आवश्यकता है, लेकिन इसके द्वारा अलग किया गया है, तो आपको pom.xml फ़ाइल को संपादित करना होगा। एक संभावित उत्तर <plugins> और </plugins> टैग के बीच निम्न प्लगइन जोड़ने का है।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
      <phase>test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <echo>Using env.test.properties</echo> 
        <copy file="textfile.txt" tofile="${basedir}/target/textfile.txt"/> 
        </tasks> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
इसके अलावा

, जैसा कि आप समर्पित प्लग इन का उपयोग करके पढ़ सकते हैं here आप भी सभी संसाधनों एक "इनपुट" निर्देशिका से एक "उत्पादन" निर्देशिका के लिए लक्ष्य के अंदर आयात कर सकते हैं, जैसे:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>3.0.1</version> 
    <executions> 
     <execution> 
      <id>copy-resources</id> 
      <!-- here the phase you need --> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/output</outputDirectory> 
       <resources>   
        <resource> 
         <directory>input</directory> 
         <filtering>true</filtering> 
        </resource> 
       </resources>    
      </configuration>    
     </execution> 
    </executions> 
</plugin> 
+0

धन्यवाद! मुझे यकीन नहीं है कि पहली प्लगइन का उपयोग सही है, लेकिन ठीक काम करता है। –

+0

बहुत बढ़िया, इससे बहुत मदद मिलती है, धन्यवाद जीनवेलजीन! –

11

सबसे आसान तरीका है, कुछ संसाधन का उपयोग करने के रूप में मैं जानता हूँ कि (आप यहां पा सकते हैं संसाधनों विन्यास बारे में अतिरिक्त जानकारी: https://maven.apache.org/plugins/maven-resources-plugin/):

<build> 
    <plugins> 
    <!-- your plugins, including or not maven-resource-plugin --> 
    </plugins> 
    <resources> 
    <resource> 
     <filtering>true</filtering><!-- if it is neccessary --> 
     <directory>${project.basedir}</directory><!-- from --> 
     <targetPath>${project.build.directory}</targetPath><!-- to --> 
     <includes><!-- what --> 
     <include>textfile.txt</include> 
     </includes> 
    </resource> 
    </resources> 
</build> 
+0

यह सुनिश्चित करने के लिए कि textfile.txt को जार फ़ाइल में भी कॉपी किया जा रहा है? – Sam

+0

मुझे मिल गया। धन्यवाद। – Sam

4

एक absol करवाने के लिए अपने निर्माण के आउटपुट का नियंत्रण नियंत्रण आप "अपाचे मेवेन असेंबली प्लगइन" का उपयोग कर सकते हैं। आप बहुत ज्यादा सब कुछ परिभाषित कर सकते हैं (प्रारूप, उपफोल्डर्स ...)।

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

<plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <descriptors> 
       <descriptor>src/main/assembly/yourassembly.xml</descriptor> 
      </descriptors> 
     </configuration> 
    </plugin> 
</plugins> 

<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>x.x</version> 
      <configuration> 
       <descriptors> 
        <descriptor>src/main/assembly/yourassembly.xml</descriptor> 
       </descriptors> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> <!-- this is used for inheritance merges --> 
        <phase>package</phase> <!-- append to the packaging phase. --> 
        <goals> 
         <goal>single</goal> <!-- goals == mojos --> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</pluginManagement> 

अपने मामले वर्णनकर्ता "yourassembly.xml" इस प्रकार किया जाएगा में:

More info

आप अपने पोम फ़ाइल में प्लगइन स्थापित करने के लिए है

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>yourassembly</id> 
    <formats> 
    <format>tar.gz</format> 
    <format>dir</format> 
    </formats> 
    <fileSets> 

    <fileSet> 
     <directory>${project.basedir}</directory> 
     <includes> 
     <include>README*</include> 
     <include>LICENSE*</include> 
     <include>NOTICE*</include> 
     </includes> 
     <useDefaultExcludes>true</useDefaultExcludes> 
    </fileSet> 

    <fileSet> 
     <directory>${project.build.directory}</directory> 
     <outputDirectory>/</outputDirectory> 
     <includes> 
     <include>*.jar</include> 
     </includes> 
    </fileSet> 

    <fileSet> 
     <directory>${basedir}</directory> 
     <outputDirectory>/</outputDirectory> 
     <includes> 
     <include>textfile.txt</include> 
     </includes> 
    </fileSet> 

    <dependencySets> 
     <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
      <unpack>false</unpack> 
     </dependencySet> 
    </dependencySets> 

    </fileSets> 

</assembly> 
संबंधित मुद्दे