2011-04-05 57 views
2

我正在开发WebService的客户端应用程序,并且在jar中有相应的WSDL文件。Maven:从jar中提取文件

我使用Ant生成与下面的build.xml WSDL中的Java代码:

<project name="wsimport" default="wsimport" basedir="."> 
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" /> 

    <target name="wsimport"> 
    <echo message="Starting wsimport"/> 
    <mkdir dir="target/generated-sources/jaxws-wsimport"/> 
    <wsimport 
     wsdl="???" 
     sourcedestdir="target/generated-sources/jaxws-wsimport" 
     extension="true" 
     verbose="true" 
     target="2.0" 
     xnocompile="true" 
     catalog="src/jax-ws-catalog.xml" 
     wsdlLocation="/MyWebService/MyWebServiceV1_0?wsdl"> 
     <binding dir="src/main/resources/bindings/v1_0" includes="*.xml"/> 
     <xjcarg value="-XhashCode"/> 
     <xjcarg value="-Xequals"/> 
     <xjcarg value="-XtoString"/> 
    </wsimport> 

    </target> 
</project> 

如何加载从一个罐子的WSDL文件? WSDL引用也在同一个jar中的XSD。

回答

5

回答我自己的问题,我使用的方法是从jar中提取文件。

其实我使用Maven构建项目和antrun插件生成从WSDL来源,所以我用了Maven的依赖,插件解压缩从JAR文件:

  <!-- extract WSDL and XSD from dependency jar --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>unpack</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>unpack</goal> 
         </goals> 
         <configuration> 
          <artifactItems> 
           <artifactItem> 
            <groupId>my.company</groupId> 
            <artifactId>my.artifact</artifactId> 
            <version>1.0</version> 
            <outputDirectory>${project.build.directory}/wsdl</outputDirectory> 
            <includes>**\/*.xsd, **\/*.wsdl</includes> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin>