2012-10-31 11 views
6

मेरे काम पर कोड पीढ़ी के लिए jaxws-maven-plugin का उपयोग किया गया। मैं दो परियोजनाओं "आम" और '' ग्राहक हैं "। संरचना मोटे तौर पर इस प्रकार है:एक्सएसडी और डब्ल्यूएसडीएल विभिन्न निर्देशिकाओं में

app/ 
  common/ 
   resource/ 
    some.xsd 
  client/ 
   resource/ 
    some.wsdl 

मैं कैसे इस परियोजना में wsdl से कक्षाओं उत्पन्न कर सकते हैं" ग्राहक ", परियोजना से XSD का उपयोग कर" आम " ?

pom.xml:।

  <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsimport</goal> 
        </goals> 
        <configuration> 
         <verbose>true</verbose> 
         <bindingFiles> 
          <bindingFile>${project.parent.basedir}/common/resource/some.xsd</bindingFile> 
         </bindingFiles> 
         <wsdlFiles> 
          <wsdlFile>/resource/some.wsdl</wsdlFile> 
         </wsdlFiles> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
तुम सब Maven सम्मेलनों पर बने रहें संसाधनों के लिए src/main/resources/ निर्देशिका का उपयोग करना चाहिए की

उत्तर

6

पहले

एक fter कर कि उसके बाद आप maven-dependency-plugin:unpack-dependencies उपयोग कर सकते हैं का उपयोग करने की common जार फ़ाइल को अनपैक करने के some.xsd:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>com.stackoverflow.Q13155047</groupId> 
     <artifactId>app</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

    <artifactId>client</artifactId> 

    <name>${project.artifactId}-${project.version}</name> 

    <properties> 
     <schema.location>${project.build.directory}/schemas</schema.location> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>com.stackoverflow.Q13155047</groupId> 
      <artifactId>common</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.5.1</version> 
       <executions> 
        <execution> 
         <id>unpack-dependencies</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>unpack-dependencies</goal> 
         </goals> 
         <configuration> 
          <includes>**/*.xsd</includes> 
          <outputDirectory>${schema.location}</outputDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxws-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>wsimport</goal> 
         </goals> 
         <configuration> 
          <verbose>true</verbose> 
          <bindingDirectory>${schema.location}</bindingDirectory> 
          <bindingFiles> 
           <bindingFile>some.xsd</bindingFile> 
          </bindingFiles> 
          <wsdlDirectory>src/main/resources</wsdlDirectory> 
          <wsdlFiles> 
           <wsdlFile>some.wsdl</wsdlFile> 
          </wsdlFiles> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

jaxws-maven-plugingenerate-sources चरण इतना जोड़ने के लिए बाध्य है jaxws-maven-pluginmaven-dependency-plugin से पहले और एक ही चरण बनाता करने के लिए सुनिश्चित करें कि wsimport लक्ष्य लागू करने से पहले यह सब कुछ अनपैक करता है।

सुनिश्चित करें कि <bindingDirectory/> और <wsdlDirectory/> सही हैं।


यदि आप किसी अन्य प्रोजेक्ट में *.xsd फ़ाइलें हैं तो आपको यह कैसे करना चाहिए। कभी सापेक्ष पथों के साथ अन्य परियोजनाओं तक पहुंचें। प्रत्येक परियोजना को केवल निर्भरता तंत्र का उपयोग करके अन्य संसाधनों तक पहुंचना चाहिए।

+0

धन्यवाद! मैं बस सभी सापेक्ष पथों को पाने की कोशिश कर रहा हूं। –

+2

इस लिंक के अनुसार - maven wsimport प्लगइन द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट स्थान src/wsdl है। मैं अनुमान लगाता हूं कि .wsdl को src/main/संसाधनों में नहीं रखा जाना चाहिए। https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html – RuntimeException

+1

जब आप $ {schema.location} निर्देशिका में अनपॅक कर रहे हैं तो आप डब्लूएसडीएल में एक्सएसडी का संदर्भ कैसे देते हैं? डब्ल्यूएसडीएल कैसे पता लगाता है कि एक्सएसडी कहां मिलें? –

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