64

पर फ़ाइल असाइन नहीं की है मै मैक 10.6.6 पर मेवेन 3.0.3 का उपयोग कर रहा हूं। मैं एक जार परियोजना है और जब मैं आदेश चला "mvn साफ स्थापित: स्थापित", मैं त्रुटि मिल रही है,मेवेन: इस प्रोजेक्ट के लिए पैकेजिंग ने बिल्ड आर्टिफैक्ट

क्या यह मतलब है और मैं इसे कैसे ठीक कर सकते हैं करता है? नीचे मेरा pom.xml है। मुझे बताएं कि कौन सी जानकारी उपयोगी होगी और मैं इस पोस्ट को संपादित करूंगा। धन्यवाद, - डेव

<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.myco.starteam.util</groupId> 
<artifactId>StarTeamCollisionUtil</artifactId> 
<packaging>jar</packaging> 
<name>StarTeam Collision Util</name> 
<description> 
    The StarTeam Collision Utility provides developers and release engineers alike the ability to 
    compare files attached to a set of CRs to see if conflicts exist in the change set. 
</description> 
<version>1.0-SNAPSHOT</version> 
<url>http://cm-build.myco.com:8080/hudson/view/Tools/job/StarTeamCollisionUtil - TRUNK/</url> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<repositories> 
    <repository> 
     <id>myco-sonatype-nexus-snapshots</id> 
     <name>MyCo Sonatype-Nexus Snapshots</name> 
     <url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url> 
    </repository> 
</repositories> 
<dependencies> 
    <dependency> 
     <groupId>starteam</groupId> 
     <artifactId>starteam</artifactId> 
     <version>1.1.0</version> 
     <type>jar</type> 
     <scope>system</scope> 
     <systemPath>${basedir}/lib/starteam110.jar</systemPath> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.ant</groupId> 
     <artifactId>ant</artifactId> 
     <version>1.8.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4.1</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.8.1</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>3.0-beta-3</version> 
      <configuration> 
       <reportPlugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-report-plugin</artifactId> 
         <version>2.5</version> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-javadoc-plugin</artifactId> 
         <version>2.7</version> 
         <configuration> 
          <linksource>true</linksource> 
         </configuration> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-jxr-plugin</artifactId> 
         <version>2.2</version> 
        </plugin> 
        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>versions-maven-plugin</artifactId> 
         <version>1.2</version> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-project-info-reports-plugin</artifactId> 
         <version>2.3.1</version> 
         <reportSets> 
          <reportSet> 
           <reports> 
            <report>index</report> 
            <report>dependencies</report> 
            <report>dependency-management</report> 
            <report>cim</report> 
            <report>issue-tracking</report> 
            <report>license</report> 
            <report>scm</report> 
           </reports> 
          </reportSet> 
         </reportSets> 
        </plugin> 
       </reportPlugins> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<distributionManagement> 
    <repository> 
     <id>sonatype-nexus</id> 
     <url>http://sonatype.myco.com/nexus/content/repositories/snapshots/</url> 
    </repository> 
</distributionManagement> 
<scm> 
    <url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url> 
</scm> 
<issueManagement> 
    <system>StarTeam</system> 
    <url>https://starteam.cmass.myco.com/BorlandStarTeam/BorlandStarTeam.jsp</url> 
</issueManagement> 
<ciManagement> 
    <system>Hudson</system> 
    <url>http://cm-build.myco.com:8080/hudson/</url> 
</ciManagement> 
</project> 

उत्तर

104

अगर यह जवाब है या नहीं, लेकिन यह सही दिशा में हो सकती है मैं नहीं जानता ...

आदेश install:install वास्तव में maven-install-plugin पर एक लक्ष्य है। यह install मेवेन लाइफसाइकिल चरण से अलग है।

Maven lifecycle phases ऐसे निर्माण में कदम हैं जो कुछ प्लगइन्स स्वयं को बांध सकते हैं। जब आप एक एकल जीवन चक्र चरण का आह्वान करते हैं तो विभिन्न प्लगइन से कई अलग-अलग लक्ष्य निष्पादित हो सकते हैं।

क्या यह करने पर निर्भर करता है ... आदेश

mvn clean install 

से अलग है ...

mvn clean install:install 

पूर्व करने के लिए अग्रणी और सहित हर चक्र में सभी लक्ष्यों चलेंगे स्थापित करें (संकलन, पैकेज, परीक्षण, आदि)। उत्तरार्द्ध आपके कोड को संकलित या पैकेज भी नहीं करेगा, यह केवल एक लक्ष्य चलाएगा। अपवाद को देखते हुए, इस तरह का अर्थ समझ में आता है;

StarTeamCollisionUtil: इसके बारे में बात करती है इस परियोजना के लिए पैकेजिंग का निर्माण विरूपण साक्ष्य के लिए एक फ़ाइल आवंटित नहीं किया

पूर्व की कोशिश करो और अपने त्रुटि बस चले जाओ हो सकता है!

4

मुझे एक ही समस्या है। मेरे लिए त्रुटि संदेश पूरा नहीं हुआ है। लेकिन मेरे मामले में, मैंने स्रोतों के साथ पीढ़ी जार जोड़ा है। pom.xml में इस कोड को रखने से: जार लक्ष्य जो स्रोतों के साथ जार का उत्पादन:

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <artifactId>maven-source-plugin</artifactId> 
       <version>2.1.2</version> 
       <executions> 
        <execution> 
         <phase>deploy</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

तो तैनाती चरण में मैं स्रोत पर अमल। और बिल्ड सफलता के साथ समाप्त होता है

+0

यह मेरे लिए काम करता है। –

3

आपको जार और अन्य में लक्ष्य फ़ाइल को साफ़ करना होगा: सी में अपने फ़ोल्डर को ड्राइव करें। उस स्थान को देखें जहां यह .jar फ़ाइल को स्थापित और हटाएं, स्नैफोट फ़ाइल और लक्ष्य हटाएं फाइलें तब आपको मिली एप्लिकेशन को साफ़ करें

+0

अच्छी तरह से आंशिक समाधान। –

39

टीएल; डीआर इस समस्या को ठीक करने के लिए, पहले पैकेजिंग प्लगइन का आह्वान करें, उदाहरण के लिए jar पैकेजिंग के लिए निम्नलिखित के रूप में, maven-jar-plugin का उपयोग करें:

mvn jar:jar install:install 

या

mvn jar:jar deploy:deploy 

आप वास्तव में जरूरत है, तो तैनात करने के लिए।

पकड़ लिया यदि आप विभिन्न packagings (कान/युद्ध/जार/ज़िप) – भी बदतर है, गलत कलाकृतियों स्थापित किया जाएगा/तैनात साथ बहु मॉड्यूल परियोजना है यह दृष्टिकोण काम नहीं करेगा! ऐसे मामले में केवल तैनाती मॉड्यूल (उदाहरण के लिए war) बनाने के लिए रिएक्टर विकल्पों का उपयोग करें।


स्पष्टीकरण

कुछ मामलों आप वास्तव में सीधे एक install:install या deploy:deploy लक्ष्य (कि maven-deploy-plugin से, है, deploy लक्ष्य, नहीं Maven deployphase) चलाना चाहते हैं और आप खत्म हो जाएगा कष्टप्रद The packaging for this project did not assign a file to the build artifact में।

एक उत्कृष्ट उदाहरण एक सीआई काम (एक जेनकींस या बांस काम, जैसे) जहां विभिन्न चरणों में आप विभिन्न पहलुओं के बारे/देखभाल निष्पादित करने के लिए चाहते हैं:

  • एक पहला कदम एक mvn clean install होगा, परीक्षण प्रदर्शन और परीक्षण कवरेज
  • एक दूसरा कदम गुणवत्ता प्रोफाइल के आधार पर सोनारक्वे विश्लेषण होगा, उदाहरण के लिए mvn sonar:sonar प्लस और विकल्प
  • फिर, और केवल सफल परीक्षण निष्पादन और गुणवत्ता द्वार पारित होने के बाद, आप अंतिम परियोजना कलाकृतियों को अपने मेवेन एंटरप्राइज़ रिपोजिटरी में तैनात करना चाहते हैं, फिर भी आप mvn deploy को फिर से चलाने के लिए नहीं चाहते हैं, क्योंकि यह फिर से होगा पिछले चरणों को निष्पादित करें (और संकलन, परीक्षण, आदि) और आप चाहते हैं कि आपका निर्माण प्रभावी हो लेकिन फिर भी तेज़

हाँ, तो आप इस अंतिम चरण में कम से कम परीक्षण लंघन (संकलन और निष्पादन, -Dmaven.test.skip=true के माध्यम से) में तेजी लाने सकता है या (यथासंभव अधिक से अधिक प्लग-इन को छोड़) एक विशेष प्रोफ़ाइल के साथ खेलते हैं, लेकिन यह बहुत आसान है और स्पष्ट है बस mvn deploy:deploy को चलाने के लिए। पैकेजिंग चरण सभी को इकट्ठा किया और संदर्भ में रखा दौरान

:

लेकिन यह, इसके बाद के संस्करण त्रुटि के साथ विफल हो जाएगा क्योंकि के रूप में भी by the plugin FAQ निर्दिष्ट। इस तंत्र के साथ मेवेन यह सुनिश्चित कर सकता है कि maven-install-plugin और maven-deploy-plugin फ़ाइलों के एक ही सेट की प्रतिलिपि/अपलोड कर रहे हैं। तो जब आप केवल deploy:deploy निष्पादित करते हैं, तो संदर्भ में कोई भी फाइल नहीं रखी जाती है और तैनाती के लिए कुछ भी नहीं है।

दरअसल, deploy:deploy पिछले चरणों (या पिछले plugins/लक्ष्यों फांसी) द्वारा निर्माण के संदर्भ में रखा कुछ रनटाइम जानकारी की जरूरत है।

यह भी एक संभावित बग के रूप में की सूचना दी है: MDEPLOY-158: तैनात: तैनाती रिमोट रेपो

लेकिन तब नहीं एक समस्या के रूप में अस्वीकार Maven के लिए एक ही नियोजित करना विरूपण साक्ष्य के लिए काम नहीं करता।

maven-deploy-plugin की deployAtEnd विन्यास विकल्प कुछ निश्चित परिस्थितियों में न तो मदद नहीं करेगा क्योंकि हम निष्पादित करने के लिए मध्यवर्ती काम चरणों है:

हर परियोजना के लिए अपने स्वयं तैनाती चरण के दौरान या अंत में तैनात किया जाना चाहिए या नहीं multimodule निर्माण के। यदि true पर सेट किया गया है और बिल्ड विफल रहता है, तो रिएक्टर परियोजनाओं में से कोई भी तैनात नहीं किया जाता है। (प्रयोगात्मक)

तो, इसे कैसे ठीक करें?
सीधे शब्दों में इस तरह के एक समान तीसरे/अंतिम चरण में निम्नलिखित चलाएँ:

mvn jar:jar deploy:deploy 

maven-jar-plugin अपने निर्माण के हिस्से के रूप में किसी भी जार फिर से बनाने नहीं होगा, इसके forceCreation विकल्प डिफ़ॉल्ट रूप से false करने के लिए सेट करने के लिए धन्यवाद:

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

लेकिन यह हमारे लिए निर्माण संदर्भ को अच्छी तरह से तैयार करेगा और deploy:deploy खुश करेगा। छोड़ने के लिए कोई परीक्षण नहीं, जोड़ने के लिए कोई प्रोफाइल नहीं। बस आपको क्या चाहिए: गति।


अतिरिक्त ध्यान दें: फांसी से जुड़ा हुआ है, तो आप build-helper-maven-plugin, buildnumber-maven-plugin या किसी अन्य समान प्लगइन का उपयोग कर रहे पर (मालसूची फ़ाइल के लिए उदाहरण के लिए प्रविष्टियों) maven-jar-plugin द्वारा इस्तेमाल किया बाद में मेटा डेटा उत्पन्न करने के लिए, आप सबसे शायद है validate चरण और आप अभी भी उन्हें jar:jar बिल्ड चरण (और फिर भी एक तेज निष्पादन रखें) के दौरान रखना चाहते हैं।

mvn validate jar:jar deploy:deploy 

फिर भी एक और अतिरिक्त ध्यान दें:: इस मामले में लगभग हानिरहित भूमि के ऊपर निम्नलिखित validatephase के रूप में लागू करने की है अगर तुम नहीं jar है, लेकिन, कहते हैं, war पैकेजिंग, war:war से पहले का उपयोग स्थापित/बजाय तैनात ।

गोटा जैसा ऊपर बताया गया है, बहु मॉड्यूल परियोजनाओं में व्यवहार की जांच करें।

+3

बहुत अच्छी व्याख्या :) – Raja

+4

इस सटीक परिदृश्य में भागो। शानदार लिखना - तैनाती प्लगइन में होना चाहिए इसके बजाय पूछे जाने वाले प्रश्नों के बजाय एफएक्यू "आप ऐसा नहीं कर सकते" स्पष्टीकरण। – markdsievers

0

यह उत्तर इस समस्या का सामना करने वाले अन्य लोगों की सहायता के लिए एक बहुत पुराने प्रश्न पर है।

मैं इस जबकि मैं अपने JavaIntelliJ IDEA आईडीई का उपयोग कर परियोजना पर काम कर रहे थे त्रुटि में विफल रहा है सामना करते हैं। नीचे वाले चित्र में लाल तीर के साथ बताया जब मैं Plugins - install तहत install:install चुनते हैं,

Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project getpassword: The packaging for this project did not assign a file to the build artifact 

इस असफल होता है,।

Choose Wrong Selection

एक बार मैं Lifecycle के तहत चयनित चला install जैसा कि ऊपर दिखाया गया है, इस मुद्दे को चला, और मेरे Maven स्थापित निर्माण सफलतापूर्वक संकलन।

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