Modify package names for java classes generated from wsdl

ric*_*mes 5 java wsdl

如何修改从多个wsdls生成的java类的包名称.我有两个wsdls,它们都生成类ObjectFactory,package-info等类,具有完全相同的包名.因此,我无法在我的代码中组织导入.对于wsdls,我的包看起来像这样 -

WSDL A
    com.test.customerinfo.dto
    com.test.customerinfo.exceptions
    com.test.customerinfo.service

WSDL B    
    com.test.customerinfo.dto
    com.test.customerinfo.exceptions
    com.test.customerinfo.service
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样 -

WSDL A
    com.test.customerinfo.dto
    com.test.customerinfo.exceptions
    com.test.customerinfo.service

WSDL B    
    com.testOne.customerinfo.dto
    com.testOne.customerinfo.exceptions
    com.testOne.customerinfo.service
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它没有用 -

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.7.7</version>
    <executions>
       <execution>
          <id>generate-sources</id>
          <phase>generate-sources</phase>
          <configuration>
             <sourceRoot>target/generated-sources/test/java</sourceRoot>
             <wsdlOptions>
                <wsdlOption>
                   <wsdl>src/main/resources/wsdl/test/GetInfo.wsdl</wsdl>
                   <extraargs>
                      <extraarg>-server</extraarg>
                      <extraarg>-client</extraarg>
                      <extraarg>-impl</extraarg>
                      <extraarg>-verbose</extraarg>
                      <extraarg>-p</extraarg>
                      <extraarg>http://dto.customerinfo.test.com/=com.test.customerinfo.dto</extraarg>
                      <extraarg>-p</extraarg>
                      <extraarg>http://services.customerinfo.test.com/=com.test.customerinfo.services</extraarg>
                      <extraarg>-p</extraarg>
                      <extraarg>http://exceptions.customerinfo.test.com/=com.test.customerinfo.exceptions</extraarg>
                   </extraargs>
                   <frontEnd>jaxws21</frontEnd>
                   <faultSerialVersionUID>1</faultSerialVersionUID>
                </wsdlOption>
             </wsdlOptions>
          </configuration>
          <goals>
             <goal>wsdl2java</goal>
          </goals>
       </execution>
    </executions>
 </plugin>
Run Code Online (Sandbox Code Playgroud)

请指教.

Tob*_*ías 13

cxf-codgen-plugin你可以在指定包映射wsdlOptions部分:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            ...
            <configuration>
                ...
                <wsdlOptions>
                    <wsdlOption>
                        ...
                        <packagenames>
                        <!-- Package Mappings -->
                            <packagename>http://namespace.example.com/=com.test.package</packagename>
                        </packagenames>
                        ...
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用extraarg:

<wsdlOptions>
    <wsdlOption>
        ...
        <extraargs>
            <extraarg>-p</extraarg>
            <extraarg>http://namespace.example.com/=com.test.package</extraarg>
        </extraargs>
    </wsdlOption>
</wsdlOptions>
Run Code Online (Sandbox Code Playgroud)

  • 您好,您的回答确实有效。引起麻烦的是命名空间末尾的 /after 。而不是 /=&lt;packagename&gt;,我不得不做 =&lt;packagename&gt;。非常感谢。 (2认同)