2011-06-24 15 views
25

मेरे पास एक टेस्ट-जार है जिसे मैं इंस्टॉल करना चाहता हूं। मुझे यकीन नहीं है कि टेस्ट-जार स्थापित करने का कोई अलग तरीका है, जैसे कि एक संपत्ति को परिभाषित करना जो मैवेन को बताता है, यह एक टेस्ट-जार है।मैवेन में टेस्ट-जार कैसे स्थापित करूं?

इसके अलावा, ग्रुप और artifactId एक और जार जिसके लिए परीक्षण से बनाया गया है जैसे ही हैं।

mvn install:install-file -DgroupId=com.example -DartifactId=example -Dpackaging=jar -Dversion=1.2.3 -Dfile=example-test.jar -DgeneratePom=true 

तो वास्तव में मैं एक परीक्षण जार स्थापित होगा:

अभी तक यह कैसे मेरे स्थापित आदेश की तरह लग रहा है? मुझे पता है कि मेवेन को बताने के लिए कुछ होना है, यह समूह के बाद से एक टेस्ट-जार है और आर्टिफैक्ट आईडी एक और जार जैसा है (जो कि जार होगा उदाहरण-test.jar एक परीक्षण है)।

+0

packagin परीक्षण-जार -Dpackaging = परीक्षण-जार http होना चाहिए: // stackoverflow .com/a/15108813/201514 –

उत्तर

38

आपको उन्हें मैन्युअल रूप से स्थापित करने की आवश्यकता नहीं है। अपने अन्य मॉड्यूल में फिर

... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.2</version> 

       <executions> 
        <execution> 
         <goals> 
          <goal>test-jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    ... 

, पर बाद में जहां आप इसे उपयोग करना होगा, आप:

mvn clean install 

आप की तर्ज पर एक विन्यास की जरूरत है: Maven जब क्रियान्वित करने के लिए यह कर देगा के रूप में निर्भरता के प्रकार को परिभाषित करने की जरूरत है:

<dependency> 
    <groupId>com.foo</groupId> 
    <artifactId>bar</artifactId> 
    <version>1.2.3</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 
+0

सही, लेकिन यह मानता है कि दोनों परियोजनाएं एक समग्र पीओएम का हिस्सा हैं, है ना? क्या होता है जब टेस्ट-जार की आपूर्ति करने वाली परियोजना टेस्ट-जार का उपयोग कर परियोजना से पूरी तरह से अलग होती है? मैं पहले पहली परियोजना में टेस्ट-जार स्थापित करना चाहता हूं ताकि यह मेरे स्थानीय '~/.m2/रिपोजिटरी 'में होगा, है ना? मुझे यह कैसे करना है? –

+0

मूल पोस्टर के प्रश्न या मेरे उत्तर में एग्रीगेटर का कोई उल्लेख नहीं है। आप दो परियोजनाओं को पूरी तरह से अलग कर सकते हैं। आप अभी भी 'टेस्ट-जार' निर्भरता को उसी तरह जोड़ देंगे। आप जिसकी देखभाल करते हैं वह यह है कि 'टेस्ट-जार' का उत्पादन करने वाली परियोजना को इसे प्रोजेक्ट करने से पहले बनाया जाना चाहिए। – carlspring

+0

ठीक है अगर वे पूरी तरह अलग हैं तो परीक्षण परियोजनाओं को _find_ करने के लिए एक प्रोजेक्ट के लिए कुछ तंत्र होना चाहिए। लेकिन मेरे अलग प्रश्न से https://stackoverflow.com/q/46943636/421049 ऐसा लगता है कि 'mvn install' का उपयोग करके वास्तव में स्थानीय भंडार में मुख्य जार के साथ परीक्षण जार स्थापित कर सकते हैं, ताकि यह समझ सके और अन्य को अनुमति दे सके उन्हें खोजने के लिए परियोजनाओं। –

1

आप अपने परीक्षण कोड एक ही परियोजना में अपना सामान्य कोड के रूप में,/src/परीक्षण/जावा के तहत डाल दिया। मैवेन पैक किए गए जार में टेस्ट कोड शामिल नहीं करने का ख्याल रखता है। यदि आपके पास निर्भरताएं हैं जिनका उपयोग केवल यूनिट परीक्षण (उदाहरण के लिए मॉकिटो, जूनिट, आदि) के लिए किया जाता है, तो आप उन्हें मेवेन निर्भरताओं में "परीक्षण" का दायरा देते हैं और वे यूनिट परीक्षणों के लिए उपलब्ध होंगे लेकिन वास्तविक जार में शामिल नहीं होंगे ।

0

मुझे लगता है कि आप generatePom झंडा याद किया हो सकता है, मैं एक ही त्रुटि मिली लेकिन अंत में नीचे काम किया

mvn install:install-file 
    -Dfile=c:/primo/primo-1.0.0-SNAPSHOT.jar 
    -DgroupId=uk.bl.primo 
    -DartifactId=primo 
    -Dversion=1.0.0 
    -Dpackaging=jar 
    -DgeneratePom=true 
8
mvn install:install-file 
    -DgroupId=com.example 
    -DartifactId=example 
    -Dversion=1.2.3 
    -Dclassifier=tests 
    -Dpackaging=test-jar 
    -Dfile=example-1.2.3-tests.jar 
संबंधित मुद्दे