2012-09-06 10 views
15

Maven माता पिता की pom.xml मेंकैसे Maven माता पिता परियोजना के लिए जार उत्पन्न करने के लिए

<packaging>pom</packaging>

खंड के लिए एक माता पिता परियोजना की आवश्यकता है। जब ऐसी परियोजना स्थापित होती है, तो केवल एक पोम-फ़ाइल मेवेन रिपोजिटरी में उत्पन्न होती है। जार-फ़ाइल उत्पन्न नहीं होती है, भले ही मूल प्रोजेक्ट में कोई जावा कोड हो। इससे मुझे अतिरिक्त खाली माता-पिता परियोजनाएं मिलती हैं, जो अधिक है। तार्किक रूप से, मेरे कुछ पुस्तकालय एक ही समय में माता-पिता हो सकते हैं।

क्या इंस्टॉलर के बीच packaging खंड को हटाने/जोड़ने के बिना माता-पिता प्रोजेक्ट के लिए दोनों पोम और जार फ़ाइलों को उत्पन्न करने का कोई तरीका है?

उत्तर

10

मेवेन जार प्लगइन और मेवेन बिल्ड हेल्पर का उपयोग करें। उदाहरण पोम:

<?xml version="1.0" encoding="UTF-8"?> 
<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>test</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0</version> 

    <packaging>pom</packaging> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.7</version> 
     <executions> 
      <execution> 
      <id>attach-artifacts</id> 
      <phase>package</phase> 
      <goals> 
       <goal>attach-artifact</goal> 
      </goals> 
      <configuration> 
       <artifacts> 
       <artifact> 
        <file>test-${project.version}</file> 
        <type>jar</type> 
       </artifact> 
       </artifacts> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>default</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <phase>package</phase> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

परिणाम Maven का निर्माण:

mvn install 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test 1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- build-helper-maven-plugin:1.7:attach-artifact (attach-artifacts) @ test --- 
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default) @ test --- 
[WARNING] JAR will be empty - no content was marked for inclusion! 
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ test --- 
[INFO] Installing /home/username/projects/test/pom.xml to /home/username/.m2/repository/test/test/1.0/test-1.0.pom 
[INFO] Installing /home/username/projects/test/test-1.0 to /home/username/.m2/repository/test/test/1.0/test-1.0.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.805s 
[INFO] Finished at: Thu Sep 06 13:33:20 EDT 2012 
[INFO] Final Memory: 4M/119M 
[INFO] ------------------------------------------------------------------------ 

Maven प्रथाओं पर एक नोट: जहां निर्भरता और अपने सभी बच्चे मॉड्यूल द्वारा आम में इस्तेमाल प्लगइन्स परिभाषित

जनक मॉड्यूल आम तौर पर कर रहे हैं । इसमें शायद ही कभी इसका उत्पादन होता है। आप शायद "वितरण" सब-मॉड्यूल चाहते हैं जो आपके मॉड्यूल में सभी मॉड्यूल कलाकृतियों को जोड़ता है, बजाय माता-पिता मॉड्यूल में ऐसा करने का प्रयास करने के बजाय।

+2

आपके समाधान के लिए धन्यवाद, नोहाज़। मैं अपने ग्रहण कार्यक्षेत्र में अतिरिक्त खाली परियोजनाओं से बचने के लिए और इस प्रकार परियोजना संबंधों को सरल बनाने के लिए एक मूल परियोजना के लिए जार-फाइल जेनरेट करना चाहता हूं। मैं मैवेन के लिए नया हूँ, इसलिए मैं गलत हो सकता हूं। क्या आप खाली पेरेंट परियोजनाओं का उपयोग करने की सलाह देते हैं? मुझे संदेह है कि आपका समाधान बच्चों की परियोजनाओं पर संघर्ष करेगा, जिनके पास जार-बिल्डिंग प्लगइन हैं। – Kallisto

+2

यह एक बिल्कुल सही है कि एक मूल परियोजना है जो "खाली" है (कोई कलाकृतियों उत्पन्न नहीं करती है) जिसमें यह केवल बाल परियोजनाओं द्वारा उपयोग की जाने वाली संपत्ति सेटिंग्स, निर्भरता संस्करण, प्लगइन्स इत्यादि को परिभाषित करता है। बीटीडब्ल्यू - यदि आप मेरे समाधान का उपयोग करते हैं, तो कृपया चेकमार्क पर क्लिक करके जवाब स्वीकार करें। – noahlz

+0

आपके उत्तर और स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। मैं माता-पिता के रूप में खाली परियोजनाओं का उपयोग करने के लिए आपकी सिफारिश का पालन करने जा रहा हूं। – Kallisto

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