2009-12-09 21 views
5

मैं एक प्रोजेक्ट चला रहा हूं जिसमें ग्रोवी 1.7-बीटा -1 पर निर्भरता है। Gmaven प्लगइन एक निर्भरता के रूप में groovy संस्करण 1.6 का उपयोग करता है।मेवेन निर्भरता groovy

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-all</artifactId> 
      <version>1.7-beta-1</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

फिर भी जब मैं Maven डिबग मोड में मुझे लगता है कि ग्रूवी 1.6 gmaven प्लगइन करने के लिए एक निर्भरता के लिए इस्तेमाल किया जा रहा है चलाएँ: मेरी पोम में, मैं निर्भरता प्रबंधन अनुभाग में grooyv-सभी के रूप में संस्करण निर्दिष्ट। मैंने सोचा कि मेरा निर्भरता प्रबंधन अनुभाग इसे ओवरराइड करेगा ताकि वे सभी 1.7-बीटा -1 का उपयोग कर सकें, लेकिन मुझे विभिन्न ग्रोवी संस्करणों के कारण त्रुटियां मिल रही हैं। यहाँ किसी भी मदद की सराहना की जाएगी।

धन्यवाद,

जेफ

उत्तर

6

पास्कल के उत्तर का एक परिष्कृत संस्करण यहां दिया गया है। मैंने मुख्य प्लगइन संस्करण को 1.2 तक अपग्रेड किया, ग्रोवी 1.7 की निर्भरता, और प्लगइन मैनेजमेंट टैग में इसे लपेट लिया ताकि यह विरासत मॉडल का अच्छी तरह से लाभ उठा सके।

ध्यान रखें कि जीएमएएन प्लगइन का 1.3-स्नैपशॉट पहले ही 1.7-आरसी 2 ग्रोवी प्रदाता का उपयोग शुरू कर चुका है।

<!-- I wrapped everything in a plugin management section so that this can be neatly inherited across all your poms --> 
<pluginManagement> 
    <plugins> 
    <plugin> 
     <groupId>org.codehaus.gmaven</groupId> 
     <artifactId>gmaven-plugin</artifactId> 
     <!-- Notice I upgraded it to 1.2 --> 
     <!-- Details here http://repo1.maven.org/maven2/org/codehaus/gmaven/gmaven-plugin/1.2/gmaven-plugin-1.2.pom --> 
     <version>1.2</version> 
     <dependencies> 
     <dependency> 
      <groupId>org.codehaus.gmaven.runtime</groupId> 
      <artifactId>gmaven-runtime-1.7</artifactId> 
      <version>1.2</version> 
     </dependency> 
     </dependencies> 
    </plugin> 
    </plugins> 
</pluginManagement> 
+0

मैंने अभी आर्केटाइप प्लगइन में एक पैच सबमिट किया है ताकि मैवेन सेंट्रल को org.codehaus.gmaven का नया संदर्भ मिलेगा: gmaven- प्लगइन: 2008 संस्करण के बजाय 1.2 अब यह इंगित कर रहा है। –

+0

समस्या लिंक जेआईआरए में यहां है ताकि जब आप इसे स्वीकार कर लेते हैं तो आप उसका अनुसरण कर सकते हैं http://jira.codehaus.org/browse/ARCHETYPE-272 कृपया इसे जिरा में वोट दें ताकि लोग इसे नोटिस कर सकें। –

+1

आप कॉन्फ़िगरेशन में प्रदाता चयन = 1.7 जोड़ना चाहते हैं, और क्षणिक groovy-all 1 पर एक बहिष्कार करना चाहते हैं।7-बीटा यहां दिए गए उत्तर के अनुसार: http://stackoverflow.com/questions/2199547/maven-compile-mixed-java-groovy-1-7-project-using-gmaven-plugin/2221752#2221752 – Tim

0

आप एक इसी तरह संरचित <plugin> या <pluginManagement> खंड में प्लगइन का निर्भरता लिए एक समान 1.7 निर्भरता जोड़ने की जरूरत है। आपके निर्भरता प्रबंधन अनुभाग जो आप जोड़ रहे हैं वह उचित है, लेकिन प्लगइन निर्भरताओं को प्रभावित नहीं करता है। मैं इस जवाब की समीक्षा करने की कोशिश करूंगा और बाद में एक उदाहरण पोस्ट करूंगा जब मैं अपनी मेज पर वापस आऊंगा।

+0

धन्यवाद, मैथ्यू इस बीच, मैं करने के लिए अद्यतन:।

<plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <configuration> <providerSelection>1.7</providerSelection> </configuration> 

FYI करें, groovy:providers mojo के लिए, इन विन्यास यह उम्मीद (मैं उन्हें org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) को डिबगिंग द्वारा निकाले (XmlPlexusConfiguration के लिए देखें) कर रहे हैं नई gmaven प्लगइन जो इस मुद्दे को "ठीक" करता है लेकिन निश्चित रूप से इसे करने का सबसे साफ तरीका नहीं है। –

2

प्लगइन द्वारा उपयोग की जाने वाली निर्भरता को ओवरराइड करना एक अच्छी क्षमता है जिसे वास्तव में मेवेन 2.0.9 द्वारा पेश किया गया था।

ऐसा करने के लिए, कम से कम एक प्लगइन के साथ जो आप सामान्य बिल्ड प्लगइन के रूप में उपयोग कर रहे हैं - एक रिपोर्ट के विपरीत जो gmaven-plugin के मामले में नहीं है, इसलिए मैं यहां इस मामले को कवर नहीं करूंगा - बस एक जोड़ें जब तक निर्भरता के नए संस्करण "एपीआई संगत" संस्करण प्लगइन के खिलाफ जोड़ा गया था के साथ है के रूप में

<plugin> 
    <groupId>org.codehaus.groovy.maven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>generateStubs</goal> 
     <goal>compile</goal> 
     <goal>generateTestStubs</goal> 
     <goal>testCompile</goal> 
     </goals> 
    </execution> 
    </executions> 
    <dependencies> 
    <dependency> 
     <groupId>org.codehaus.groovy</groupId> 
     <artifactId>groovy-all</artifactId> 
     <version>1.7-beta-1</version> 
    </dependency> 
    </dependencies> 
</plugin> 

: प्लगइन ब्लॉक के अंदर निर्भरता ब्लॉक, इस तरह (यह एक नमूना है संस्करणों गलत हो सकता है तो) , आपको ठीक होना चाहिए। यदि नहीं, तो आपको स्पष्ट रूप से नए एपीआई (यानी इसे निर्भरता के रूप में उपयोग करने की संभावना) के साथ प्लगइन के एक नए संस्करण में अपग्रेड करना होगा, जो आपने किया था।

1

जीएमवेन सही ढंग से सही रनटाइम चुनने के लिए "प्रदाता चयन" मान को कॉन्फ़िगर करके है।

<configuration> 
<remoteRepositories implementation="java.util.List">${project.pluginArtifactRepositories}</remoteRepositories> 
<project implementation="org.apache.maven.project.MavenProject">${project}</project> 
<artifactRepository implementation="org.apache.maven.artifact.repository.ArtifactRepository">${localRepository}</artifactRepository> 
<pluginArtifactMap implementation="java.util.Map">${plugin.artifactMap}</pluginArtifactMap> 
<providerSelection implementation="java.lang.String">${gmaven.runtime}</providerSelection> 
</configuration> 
संबंधित मुद्दे