2010-03-17 23 views
19

मैंने एक व्यक्तिगत जार-निर्भरता असेंबली डिस्क्रिप्टर को परिभाषित किया है। हालांकि, जब मैं mvn विधानसभा के साथ इसे निष्पादित करें: विधानसभा, मैं मिलता है:मेवेन असेंबली - असेंबली पढ़ने में त्रुटि

... 
[INFO] META-INF/ already added, skipping 
[INFO] META-INF/MANIFEST.MF already added, skipping 
[INFO] javax/ already added, skipping 
[INFO] META-INF/ already added, skipping 
[INFO] META-INF/MANIFEST.MF already added, skipping 
[INFO] META-INF/maven/ already added, skipping 
[INFO] [assembly:assembly {execution: default-cli}] 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error reading assemblies: No assembly descriptors found. 

मेरे जार-साथ-dependencies.xmlsrc/मुख्य/संसाधन/विधानसभाओं/ में है।

मेरे विधानसभा की जानकारी देता है निम्नलिखित:

<?xml version='1.0' encoding='UTF-8'?> 
<assembly> 
    <id>jar-with-dependencies</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <dependencySets> 
     <dependencySet> 
      <scope>runtime</scope> 
      <unpack>true</unpack> 
      <unpackOptions> 
       <excludes> 
        <exclude>**/LICENSE*</exclude> 
        <exclude>**/README*</exclude> 
       </excludes> 
      </unpackOptions> 
     </dependencySet> 
    </dependencySets> 

    <fileSets> 
     <fileSet> 
      <directory>${project.build.outputDirectory}</directory> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>src/main/resources/META-INF/services</directory> 
      <outputDirectory>META-INF/services</outputDirectory> 
     </fileSet> 
    </fileSets> 

</assembly> 

और मेरी परियोजना pom.xml है:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-5</version> 
    <executions> 
     <execution> 
      <id>jar-with-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
        <descriptor>jar-with-dependencies.xml</descriptor> 
       </descriptors> 
       <archive> 
        <manifest> 
         <mainClass>org.my.app.HowTo</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

जब mvn विधानसभा: विधानसभा किया जाता है, निर्भरता पैक कर रहे हैं और मैं पिछले त्रुटि मिलती है जब अनपॅक समाप्त हो गया है।

इसके अलावा, अगर मैं एमवीएन-ए असेंबली निष्पादित करता हूं: असेंबली यह कहता है कि कोई वर्णनकर्ता नहीं मिला है, हालांकि यह निर्भरताओं को अनपैक करने का प्रयास करता है और निर्भरता के साथ एक जार बनाया जाता है लेकिन इसमें मेटा-आईएनएफ/सेवाएं/* जैसा कि वर्णनकर्ता में निर्दिष्ट है:

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error reading assemblies: No assembly descriptors found. 

[INFO] ------------------------------------------------------------------------ 
[INFO] Trace 
org.apache.maven.lifecycle.LifecycleExecutionException: Error reading assemblies: No assembly descriptors found. 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) 
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) 
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) 
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Error reading assemblies: No assembly descriptors found. 
    at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:356) 
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) 
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) 
    ... 17 more 
Caused by: org.apache.maven.plugin.assembly.io.AssemblyReadException: No assembly descriptors found. 
    at org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.readAssemblies(DefaultAssemblyReader.java:206) 
    at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:352) 
    ... 19 more 

मुझे मेरी त्रुटि दिखाई नहीं दे रही है। क्या किसी के पास समाधान है?

+0

इसे जांचें: https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html –

उत्तर

20

यहां दो समस्याएं हैं। सबसे पहले, अपने स्वयं के वर्णनकर्ता का उपयोग करते समय, आपको को अपने कस्टमाइज्ड डिस्क्रिप्टर फ़ाइल का मार्ग निर्दिष्ट करना होगा (वैसे, आप किसी भी स्थान का उपयोग कर सकते हैं लेकिन src/main/resources में डिस्क्रिप्टर डालना शायद सबसे अच्छा विकल्प नहीं है, आप वास्तव में नहीं चाहते हैं आपके आवेदन में पैक करने के लिए वर्णक, मैं मानक स्थान का उपयोग करूंगा जो src/main/assembly है जैसा कि this page में उल्लिखित है)।

<descriptors> 
    <descriptor>src/main/assembly/jar-with-dependencies.xml</descriptor> 
</descriptors> 

दूसरा, अपने configuration तत्व एक execution ब्लॉक के अंदर वर्तमान में है और इस तरह इस निष्पादन के लिए विशिष्ट है। दूसरे शब्दों में, यदि आप कमांड लाइन पर assembly:assembly चलाते हैं तो यह लागू नहीं होगा। (विन्यास वैश्विक बनाने के लिए)

mvn assembly:assembly -Ddescriptor=path/to/descriptor.xml 

या configuration ले जाने execution तत्व बाहर:: तो, आप एक कस्टम वर्णनकर्ता साथ assembly:assembly, या तो उपयोग कॉल करना चाहते हैं, तो

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
     <configuration> 
      <descriptors> 
      <descriptor>path/to/descriptor.xml</descriptor> 
      </descriptors> 
      ... 
     </configuration> 
     </plugin> 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 
+1

मैंने पथ संपादित किया है और jar-with-dependencies.xml को src/main/assembly/जैसा कि आप उल्लेख करते हैं लेकिन मुझे हमेशा एक ही त्रुटि मिलती है। यह बहुत अद्भुत है। – Laurent

+1

मुझे यकीन नहीं है कि यह एक पथ त्रुटि है। यदि मैं गलत पथ इंगित करता हूं, तो निम्नलिखित संदेश द्वारा निर्भरताओं को अनपैक करने से पहले निष्पादन रोक दिया गया है: असेंबली डिस्क्रिप्टर फ़ाइल ढूंढने में त्रुटि ... (ऐसी कोई फ़ाइल या निर्देशिका नहीं) जबकि सही रास्ते के साथ मेरे मामले में, मुझे मिलता है: असेंबली पढ़ने में त्रुटि: कोई असेंबली डिस्क्रिप्टर नहीं मिला। – Laurent

+0

मुझे एक ही समस्या है। असेंबली प्लगइन छोटी गाड़ी, या बहुत उपयोगकर्ता असभ्य लगता है। –

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