2011-10-14 14 views
10

मेरे पास बहु मॉड्यूल मैवेन प्रोजेक्ट है। जब मैं साइट बनाने की कोशिश करता हूं, उदा। मूल परियोजना पर maven site निष्पादित करें यह मॉड्यूल में से किसी एक पर निर्भरता को हल करने में विफल रहता है। लेकिन अगर मैं सिर्फ मूल परियोजना पर संकलित (mvn clean compile) संकलित करता हूं या परीक्षण चलाता हूं (पैरेंट प्रोजेक्ट पर mvn clean test) कोई निर्भरता समस्या नहीं है।मैवेन निर्भरता को हल करने में विफल रहता है

इस तरह के व्यवहार का कारण क्या हो सकता है?

युपीडी

Maven संस्करण

Apache Maven 3.0.2 (r1056850; 2011-01-09 02:58:10+0200) 
Java version: 1.6.0_26, vendor: Sun Microsystems Inc. 
Java home: c:\Program Files\Java\jdk1.6.0_26\jre 
Default locale: en_US, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

Maven-साइट-प्लगइन संस्करण

[DEBUG] Included: org.apache.maven.plugins:maven-site-plugin:jar:2.0.1 

त्रुटि संदेश

[ERROR] Failed to execute goal on project myproj-client: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project myproj-client: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT 
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:190) 
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:104) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:258) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:201) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    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.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project mycompany.myproj:myproj-client:jar:0.0.1-SNAPSHOT: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT 
    at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:156) 
    at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:165) 
    ... 22 more 
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT 
    at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:526) 
    at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveArtifacts(DefaultRepositorySystem.java:304) 
    at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:334) 
    at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:150) 
    ... 23 more 
Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact mycompany.myproj:myproj-common:jar:0.0.1-SNAPSHOT 
    at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:517) 
    ... 26 more 
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :myproj-client 
+0

मेवेन का कौन सा संस्करण और साइट प्लगइन का संस्करण क्या है? – jtahlborn

+0

@jtahlborn, मेवेन संस्करण के साथ अद्यतन प्रश्न। पोम फाइलों में स्पष्ट रूप से परिभाषित कोई साइट प्लगइन्स नहीं हैं। –

+0

यदि आप -X तर्क के साथ एमवीएन चलाते हैं, तो यह जानकारी के रीम थूक जाएगा। जो आपको उपयोग कर रहे विभिन्न libs के संस्करण को निर्धारित करने में सक्षम होना चाहिए। – jtahlborn

उत्तर

-2

Apache website से:

साइट: साइट का उपयोग एक ही परियोजना के लिए साइट उत्पन्न करने के लिए किया जाता है। ध्यान दें कि बहु मॉड्यूल निर्माण में मॉड्यूल साइटों के बीच लिंक काम नहीं करेंगे।

+0

शामिल है जो आप इसका मतलब है उससे उलझन में हैं। इसका अर्थ यह है कि यदि आप जेनरेट किए गए सब-मॉड्यूल पेज को वेब ब्राउज़र में लोड करते हैं, तो इंटर-मॉड्यूल लिंक टूटा जाएगा। आपको सही संरचना में लाने के लिए साइट को मंच या तैनात करने की आवश्यकता है ताकि लिंक सही तरीके से काम कर सकें। – jtahlborn

+0

@jtahlborn, लेकिन अब समस्या लिंक के साथ नहीं है, यह निर्भरता के साथ है :( –

+0

@ मिशानेस्टेरेन्को - हाँ, मैं समझता हूं कि आप क्या पूछ रहे हैं, मैं इस जवाब का जवाब दे रहा था, जो गलत है। – jtahlborn

0

ऐसा लगता है जैसे मैवेन मायप्रोज़-आम की तलाश में है: जार: 0.0.1-रिपोजिटरी में स्नैपशॉट।

विफलता का कारण हो सकता है: मैवेन रिपोजिटरी में स्नैपशॉट कलाकृतियों तक पहुंचने में सक्षम नहीं है।

स्नैपशॉट कलाकृतियों सक्षम करने के लिए:

जाँच कृपया आप स्नैपशॉट भंडार खंड के अंतर्गत टैग के लिए pom.xml।

<repository> 
    <name>xyz</name> 
    <id>repoid</id> 
    <url>http://x.y.z</url> 
    <releases> 
     <enabled>true</enabled> 
    </releases> 
    <snapshots> 
     <enabled>true</enabled> 
    </snapshots> 
</repository> 
+0

ओपी ने संकेत दिया कि सामान्य संकलन कार्य करता है ठीक है, तो मुझे संदेह है कि यह मुद्दा है। – jtahlborn

3

इस साइट में नहीं प्लगइन रिएक्टर के लिए उपयोग हो रही है, और इस तरह देख नहीं है कि परियोजना के विरूपण साक्ष्य अपनी परियोजना स्रोतों में उपलब्ध है के साथ एक समस्या हो सकती है। (यह केवल एक परिकल्पना है, शायद MSITE-302 द्वारा समर्थित।)

पहले mvn install को चलाने का प्रयास करें, जो स्थानीय संग्रह में आपकी कलाकृतियों को स्थापित करता है, और फिर mvn site चला रहा है।

रिएक्टर के बारे में अधिक जानकारी के लिए, कोशिश:

+0

क्या प्रत्येक उप प्रोजेक्ट को स्थापित करना आवश्यक है? – gfan

1

हे, किसी कारण से, के बाद मैं माता पिता पोम फ़ाइलों मॉड्यूल और कुछ परिवर्तन किए, समस्या गायब हो गई । मुझे नहीं पता कि वास्तव में क्या किया गया था, लेकिन वर्तमान में mvn site मूल परियोजना पर सामान्य रूप से काम कर रहा है। दुर्भाग्य से मेरे पास समस्या की जड़ों की जांच करने का कोई समय नहीं है। लेकिन ऐसा लगता है कि 3.0 संस्करण को बदलने के लिए मुझे सही तरीके से रखा गया है। इसके अलावा मैं mvn compile site निम्नलिखित तरीके से साइट (इसे ठीक करने से पहले) निष्पादित कर सकता था, इस मामले में यह निर्भरता पा सकता है।

+0

इस प्रकार मेवेन का ज्ञान है – Totoro

13

मुझे एक ही समस्या है।मैंने मैवेन के स्रोत कोड में बहुत कुछ खोला नहीं था। लेकिन यहां मेरा अवलोकन है।

माना जाता है कि आपने कभी भी mvn installmyproj-common को अपने स्थानीय भंडार में नहीं रखा है, न ही इसे किसी भी दूरस्थ भंडार पर तैनात किया है। जब आप माता-पिता परियोजना पर mvn clean site चलाने के लिए, चीजों को इस तरह होती हैं:

  1. Maven निर्धारित करता है से पहले myproj-ग्राहक उनकी निर्भरता संबंध के अनुसार
  2. mvn clean site पर चलाया जाता है myproj-आम के आदेश है myproj-commonमें पिछले सभी परिणाम myproj-common/target हटा दिए गए हैं और myproj-common/target/site उत्पन्न हुआ है। (ध्यान दें कि इस चरण के बाद, न तो संकलित वर्गों और न ही पैक जार myproj-आम/लक्ष्य में मौजूद है)
  3. mvn clean sitemyproj-ग्राहक पर चलाया जाता है। Maven पहले जाँच करता है इस परियोजना के निर्भरता, और myproj-आम के विरूपण साक्ष्य (वर्ग या जार) इन स्थानों में खोजने की कोशिश करता: (क) myproj-आम/को लक्षित (b) स्थानीय भंडार (3) रिमोट रिपोजिटरीज।
  4. mvn site, myproj-ग्राहक पर विफल रहता है के बाद से यह myproj-आम

यही कारण है mvn clean compile site और mvn clean package site कार्यों के विरूपण साक्ष्य नहीं मिल रहा। myproj-client पर रनों से पहले myproj-common कलाकृतियों को अपनी लक्षित निर्देशिका में तैयार किया होगा।

और mvn install के बाद mvn site काम करता है।

एक विशेष अपवाद यह है कि यदि आप रिपोर्टिंग में एम्मा-मेवेन-प्लगइन की तरह कुछ डालते हैं, तो यह स्वचालित रूप से संकलित और वाद्ययंत्र कक्षाओं को स्वचालित रूप से संकलित करेगा। इस मामले में, mvn clean site हमेशा काम करता है।

मुझे यकीन नहीं है कि क्यों मैवेन चरण 3 में myproj-common के जार को खोजने का प्रयास करता है, ऐसा लगता है कि mvn site के साथ कुछ लेना देना नहीं है। मेवेन-साइट-प्लगइन में आने से पहले अपवाद मैवेन कोर में काफी जल्दी होता है। यह मैवेन-साइट-प्लगइन की समस्या की तरह नहीं दिखता है लेकिन सभी मेवेन लाइफसाइक्सेस का एक आम व्यवहार है (को छोड़कर मुझे विश्वास है)।

3

मैं इसका सामना कर रहा था लेकिन स्ट्रैट्स और पेपैल_बेस निर्भरताओं के लिए, मैंने निम्नलिखित करके तय किया।

  1. मैंने जांच की, और पाया कि जार फाइलें मैवेन रिपोजिटरी (.m2/reposotory ....) में उपयुक्त फ़ोल्डर में मौजूद नहीं थीं।
  2. मैं स्थापित किया है कि mvn आदेश के बाद के माध्यम से जार फ़ाइलों

    mvn स्थापित: स्थापित फ़ाइल -Dfile = C: \ निर्भरता \ paypal_base.jar \ -DgroupId = paypal -DartifactId = paypal_base -Dversion = 0।1 \ -Dpackaging = जार

और

mvn install:install-file -Dfile=C:\Dependencies\struts.jar \ 
    -DgroupId=struts -DartifactId=struts -Dversion=0.1 \ 
    -Dpackaging=jar 

  1. पुनर्निर्माण (-DFile आप सिस्टम में जार फ़ाइल का स्थान है) मेवेन द्वारा परियोजना।
  2. मेरी परियोजना सफल निर्माण थी।

आपको जार की जांच करनी होगी, और ऊपर निर्देश का उपयोग करना जार मौजूद नहीं है। यह सहायक होगा।