2011-11-16 10 views
13

मैं अपनी मेवेन 2 बिल्ड फ़ाइल को क्रमबद्ध करने के लिए स्विच करना चाहता हूं। डब्लूएसडीएल + एक्सएसडी से जावा वर्गों को ग्रेडल के साथ उत्पन्न करने के लिए प्रलेखित नहीं किया जाता है, इसके लिए कोई ग्रेडल प्लगइन नहीं है। मैवेन के साथ निम्न कॉन्फ़िगरेशन का उपयोग करता हूं और ग्रेडल के बराबर खोज करता हूं।कैसे डब्लूएसडीएल और एक्सएसडी से कक्षाएं उत्पन्न करते हैं, मेवेन-जैक्सबी 2-प्लगइन के समतुल्य

<!-- plugin for generating the classes from the WSDL+XSD --> 
<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <version>0.7.3</version> 
    <executions> 
    <execution> 
     <id>app1-stub-generation</id> 
     <goals> 
     <goal>generate</goal> 
     </goals> 
     <configuration> 
     <schemaDirectory>${project.build.directory}/wsdl/app1</schemaDirectory> 
     <schemaIncludes> 
      <include>*.xsd</include> 
     </schemaIncludes> 
     <generatePackage>org.app1.ws.generated</generatePackage> 
     <generateDirectory>${project.build.directory}/generated-sources/app1</generateDirectory> 
     <strict>true</strict> 
     </configuration> 
    </execution> 
    <execution> 
     <id>app2-v1-stub-generation</id> 
     <goals> 
     <goal>generate</goal> 
     </goals> 
     <configuration> 
     <schemaDirectory>src/main/resources/wsdl</schemaDirectory> 
     <schemaIncludes> 
      <include>v1/*.xsd</include> 
     </schemaIncludes> 
     <generatePackage>org.app2.ws.generated.v1</generatePackage> 
     <generateDirectory>${project.build.directory}/generated-sources/v1</generateDirectory> 
     <strict>true</strict> 
     </configuration> 
    </execution> 
    <execution> 
     <id>app2-v2-stub-generation</id> 
     <goals> 
     <goal>generate</goal> 
     </goals> 
     <configuration> 
     <schemaDirectory>src/main/resources/wsdl</schemaDirectory> 
     <schemaIncludes> 
      <include>v2/*.xsd</include> 
     </schemaIncludes> 
     <generatePackage>org.app2.ws.generated.v2</generatePackage> 
     <generateDirectory>${project.build.directory}/generated-sources/v2</generateDirectory> 
     <strict>true</strict> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

उत्तर

23

मैं इसे हल ...

configurations { 
    jaxb 
} 

dependencies { 
    jaxb group: 'com.sun.xml.bind', name: 'jaxb-xjc', version: '2.2.4-1' 
} 

task jaxb() { 
    // output directory 
    jaxbTargetDir = file("${buildDir}/generated-sources") 
    jaxbTargetDirV19 = file(jaxbTargetDir.path + '/v19') 
    jaxbTargetDirV110 = file(jaxbTargetDir.path + '/v110') 
    jaxbTargetDirOtherWs = file(jaxbTargetDir.path + '/otherWs') 

    // perform actions 
    doLast { 
     jaxbTargetDirV19.mkdirs() 
     jaxbTargetDirV110.mkdirs() 
     jaxbTargetDirOtherWs.mkdirs() 

     ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath) 
     ant.jaxbTargetDirV19 = jaxbTargetDirV19 
     ant.jaxbTargetDirV110 = jaxbTargetDirV110 
     ant.jaxbTargetDirOtherWs = jaxbTargetDirOtherWs 

     // My-Webservice v1.10 
     ant.xjc(
       destdir: '${jaxbTargetDirV110}', 
       package: 'mypackage.ws.generated.v110', 
       schema: 'src/main/resources/wsdl/v1.10/MyServiceSchema.xsd' 
     ) 

     // My-Webservice v1.9 
     ant.xjc(
       destdir: '${jaxbTargetDirV19}', 
       package: 'mypackage.ws.generated.v19', 
       schema: 'src/main/resources/wsdl/v1.9/MyServiceSchema.xsd' 
     ) 

     // OtherWs-Webservice 
     ant.xjc(
       destdir: '${jaxbTargetDirOtherWs}', 
       package: 'mypackage.otherws.generated', 
       schema: 'src/main/resources/wsdl/OtherWsServiceSchema.xsd' 
     ) 
    } 
} 
compileJava.dependsOn jaxb 
+0

किसी को अब भी इस ट्रैक कर रहा है, किसी को भी इस के लिए JAXB एक्सटेंशन जोड़ने की कोशिश की है? जब मैं ऐसा करता हूं, तो मुझे "प्रदाता xx एक उप प्रकार नहीं" जैसी त्रुटि मिलती है, जहां एक्सटेंशन के लिए "xx" मुख्य प्लगइन क्लास है। –

13

आप एक विशेष की जरूरत के लिए एक Gradle प्लगइन बंद हो जाए तो (और अपने खुद के प्लगइन लिखने के लिए नहीं करना चाहते हैं), एक चींटी कार्य के लिए बाहर देखो। जेएक्सबी के लिए यहां एक है: XJC Ant Task

किसी भी चींटी कार्य का उपयोग ग्राडल से किया जा सकता है (Using Ant from Gradle देखें)। भविष्य में, ग्रैडल मेवेन प्लगइन्स के निष्पादन का भी समर्थन करेगा।

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