2015-10-28 10 views
5

मैं निम्न ग्रेड प्लगइन परिभाषित करने के लिए समकक्ष मेवेन प्लगइन कैसे लिख सकता हूं?माइवेन प्लगइन रूपांतरण के लिए ग्रेडल

/* 
* Plugin to copy system properties from gradle JVM to testing JVM 
* Code was copied from gradle discussion froum: 
* http://forums.gradle.org/gradle/topics/passing_system_properties_to_test_task 
*/ 
class SystemPropertiesMappingPlugin implements Plugin{ 
    public void apply(Project project){ 
     project.tasks.withType(Test){ testTask -> 
      testTask.ext.mappedSystemProperties = [] 
      doFirst{ 
       mappedSystemProperties.each{mappedPropertyKey -> 
        def systemPropertyValue = System.getProperty(mappedPropertyKey) 
        if(systemPropertyValue){ 
         testTask.systemProperty(mappedPropertyKey, systemPropertyValue) 
        } 
       } 
      } 
     } 
    } 
} 
+0

आप जावा प्लगइन को maven में परिवर्तित करना चाहते हैं? –

+0

हाँ .. जो मैं एक प्लगइन के रूप में मेवेन पोम में उपयोग कर सकते हैं। –

+0

ओकेज़ कोशिश करें http://crunchify.com/how-to-convert-existing-java-project-to-maven-in-eclipse/ अगर मैं गलत हूं तो कृपया मुझे बताएं कि आप इसे कैसे करना चाहते हैं IMEan आप इस विचार को –

उत्तर

1

यह वास्तव में इस बात पर निर्भर करता है कि आप वास्तव में क्या हासिल करना चाहते हैं।

यदि आप सामान्य रूप से एक मेवेन प्लगइन लिखने में मदद करना चाहते हैं, तो आपको read the documentation करना होगा।

यदि आप सिस्टम गुणों को फ़िल्टर करना चाहते हैं, तो मैवेन जेवीएम आपके परीक्षण जेवीएम में गुजरता है, मुझे maven-surefire-plugin प्लगइन को विस्तारित करने और ऐसे मैपिंग करने के लिए कोई विकल्प जोड़ने से कोई अन्य विकल्प नहीं दिखता है। (ध्यान दें कि डिफ़ॉल्ट रूप से मावेन अपनी सभी सिस्टम प्रॉपर्टीज परीक्षण जेवीएम में पास करता है।) यह निश्चित रूप से करने योग्य है लेकिन हो सकता है कि आप अपने लक्ष्य को पहले से ही उपलब्ध कुछ मैवेन के साथ प्राप्त कर सकें।

आप निश्चित रूप से का उपयोग करके Maven से अपने परीक्षण JVM करने के लिए अतिरिक्त सिस्टम गुण पारित कर सकते हैं:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19</version> 
    <configuration> 
     <systemPropertyVariables> 
       <propertyName>propertyValue</propertyName> 
       <anotherProperty>${myMavenProperty}</buildDirectory> 
     </systemPropertyVariables> 
    </configuration> 
</plugin> 

के रूप में दस्तावेज http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html

इस मामले में आप Maven

mvn test -DmyMavenProperty=theValueThatWillBePassedToTheTestJVMAsProperty_anotherProperty 

तुम भी उपयोग कर सकते हैं अचूक argline JVM करने के लिए कई गुण पारित करने के लिए लागू द्वारा कमांड लाइन से anotherProperty का मान सेट कर सकते हैं। उदाहरण

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19</version> 
    <configuration> 
     <argLine>${propertiesIWantToSetFromMvnCommandLine}</argLine> 
    </configuration> 
</plugin> 

के लिए और Maven पर अमल के रूप में

mvn test -DpropertiesIWantToSetFromMvnCommandLine="-Dfoo=bar -Dhello=ahoy" 
इस मामले में

इस प्रकार है, आप अपने परीक्षण JVM में गुण foo और क्रमशः मूल्यों bar और ahoy, साथ hello भी दिखाई देगा।

+0

हैलो .. प्रश्न के संदर्भ में, मेरे पास निम्नलिखित गुण हैं जिन्हें मैप करने की आवश्यकता है: मैप किया गया सिस्टमप्रॉपर्टीज = ['jivetests', 'jive.suite.name', 'jive.package.base', 'jive.package.include' , 'jive.package.exclude', 'jive.testclass.include', 'jive.testclass.exclude', 'jive.testclass.id.include', 'jive.testclass.id.exclude'] .... तो मुझे pom.xml में किसी विशिष्ट प्रॉपर्टी नाम के लिए प्रॉपर्टी वैल्यू कैसे मिलेगा (जैसा कि System.getProperty यहां मदद नहीं करेगा)? –

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