2010-08-11 9 views
13

मैं कुछ संसाधनों को एक जार फ़ाइल में जोड़ना चाहता हूं। मैंने इसे "प्रोफाइल" किया और उन्हें बिल्ड सेक्शन में जोड़ा।मेवेन संसाधन जार फ़ाइल में नहीं रखा गया

लेकिन संसाधन अंतिम जार फ़ाइल में नहीं हैं।

यहाँ यह जाता है मेरी pom.xml का प्रोफ़ाइल अनुभाग:

<profile> 
    <id>myProfile</id> 
    <build> 
    <finalName>name</finalName> 
    <resources> 
     <resource> 
     <targetPath>.</targetPath> 
     <filtering>false</filtering> 
     <directory>${basedir}/profiles/myFolder</directory> 
     <includes> 
      <include>file.txt</include> 
      <include>file.xml</include> 
     </includes> 
     </resource> 
    </resources> 
    </build> 
</profile> 

और यहाँ आदेश मैं जारी करते हैं:

क्या गलत है?

उत्तर

11

आपका पीओएम स्निपेट विश्व स्तर पर ठीक दिखता है और मैं आपकी समस्या को पुन: उत्पन्न नहीं कर सकता।

<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.stackoverflow</groupId> 
    <artifactId>Q3459013</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <profiles> 
    <profile> 
     <id>myProfile</id> 
     <build> 
     <finalName>name</finalName> 
     <resources> 
      <resource> 
      <directory>${basedir}/profiles/myFolder</directory> 
      <filtering>false</filtering> 
      <includes> 
       <include>file.txt</include> 
       <include>file.xml</include> 
      </includes> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
    </profiles> 
</project> 
निम्नलिखित परियोजना संरचना के साथ

:

 
$ tree . 
. 
├── pom.xml 
├── profiles 
│   └── myFolder 
│    ├── file.txt 
│    └── file.xml 
└── src 
    ├── main 
    │   └── java 
    │    └── com 
    │     └── stackoverflow 
    │      └── App.java 
    └── test 
     └── java 
      └── com 
       └── stackoverflow 
        └── AppTest.java 

11 directories, 5 files 

और यहाँ मैं क्या मिलता है:

 
$ mvn clean install -PmyProfile 
... 
$ cd target 
$ tree . 
. 
├── classes 
│   ├── com 
│   │   └── stackoverflow 
│   │    └── App.class 
│   ├── file.txt 
│   └── file.xml 
├── maven-archiver 
│   └── pom.properties 
├── name.jar 
├── surefire-reports 
│   ├── com.stackoverflow.AppTest.txt 
│   └── TEST-com.stackoverflow.AppTest.xml 
└── test-classes 
    └── com 
     └── stackoverflow 
      └── AppTest.class 
$ jar xvf name.jar 
    created: META-INF/ 
inflated: META-INF/MANIFEST.MF 
    created: com/ 
    created: com/stackoverflow/ 
inflated: file.xml 
inflated: com/stackoverflow/App.class 
inflated: file.txt 
    created: META-INF/maven/ 
    created: META-INF/maven/com.stackoverflow/ 
    created: META-INF/maven/com.stackoverflow/Q3459013/ 
inflated: META-INF/maven/com.stackoverflow/Q3459013/pom.xml 
inflated: META-INF/maven/com.stackoverflow/Q3459013/pom.properties 

वर्क्स अपेक्षा के अनुरूप यहां pom.xml मैं प्रयोग किया जाता है।

+1

@ पास्कल: बहुत अच्छा जवाब। मेरे पास एक ही pom.xml है क्योंकि यह जार फ़ाइल में उचित फ़ाइलों को शामिल नहीं करता है। मैं बाद में maven2 के एक नए संस्करण के साथ कोशिश करूंगा (मेरा 2.0.9 है)। आपके समय के लिए धन्यवाद! – ssedano

+0

@Udo मैं वास्तव में मेवेन 2.2.1 –

+0

@ पास्कल और अमरा का उपयोग कर रहा हूं: अब मुझे यह काम करने के लिए धन्यवाद! लेकिन अगर मैं फ़ाइलों को रूट फ़ोल्डर (जार) में रखना चाहता हूं? targetPath> target/myProject काम नहीं करता – ssedano

5

संसाधनों को मैवेन में दो तरीकों से निर्दिष्ट किया जा सकता है। सरल एक केवल निर्देशिका हैं जो लक्ष्य/कक्षा निर्देशिका में कॉपी की गई हैं। आप बस resource directories, filtering और included/excluded files कॉन्फ़िगर कर सकते हैं। डिफ़ॉल्ट संसाधन निर्देशिका src/main/संसाधन है।

जटिल सेटिंग के लिए आपको मेवेन प्लगइन को कॉन्फ़िगर करने की आवश्यकता है। जब आप चलाते हैं तोfollowing actions run इंस्टॉल करें। पैकेजिंग चरण में मेवेन-संसाधन-प्लगइनसंसाधनों के साथ चलाता है: संसाधन लक्ष्य।

कॉन्फ़िगरेशन के लिए केवल resources mojo parameters उपयोग करें। example देखें।

अपनी प्रोफाइल $ {projectdir}/profiles/myFolder पर ले जाएं। यदि प्रोफाइल/MyFolder शामिल करने के लिए केवल फ़ाइलें हैं

<resources> 
    <resource> 
     <directory>profiles/myFolder</directory> 
     <includes> 
      <include>file.txt</include> 
      <include>file.xml</include> 
     </includes> 
    </resource> 
</resources> 

आप छोड़ सकते हैं हिस्सा भी शामिल है।

+0

आपके समय के लिए धन्यवाद, जैसा कि मैंने पास्कल से कहा था, मैं मैवेन को अपग्रेड करने का प्रयास करूंगा और मैं परिणाम पोस्ट करूंगा। धन्यवाद। – ssedano

3

इस तरह की सरल संरचना का प्रयास करें, यह मेरे लिए काम कर रहा है।

<profile> 
     <id>myProfile</id> 
     <build> 
     <finalName>name</finalName> 
     <resources> 
      <resource> 
       <targetPath>webapp</targetPath> 
       <directory>src/main/webapp</directory> 
      </resource> 
      <resource> 
       <directory>src/main/resources</directory> 
      </resource> 
     </resources> 
     </build> 
    </profile> 
2

समस्या है: <targetPath>.</targetPath>, यह शुरू समस्या को ठीक करने के लिए।

जार मेवेन पैक करने के लिए लक्ष्य/कक्षा फ़ोल्डर की सामग्री का उपयोग करता है, अन्यथा मैवेन-जार-प्लगइन का उपयोग करें और प्रतिलिपि बनाने के लिए स्वयं को कॉन्फ़िगर करें।

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