为什么从axis2生成的包包含额外的“src”?

时间:2015-03-16 11:50:54

标签: java ant axis2

我正在尝试将应用程序从JaxB转换为Axis2,因为我有一个基于它的工作示例,但我现在遇到通过我的sharedbuild.xml文件生成它的问题。

共享版本中的源代码如下所示:

<property name="gen.source.dir" value="${source.dir}/gen" />

<target name="axis build" depends="ivy.retrieve.tools">
    <mkdir dir="${gen.source.dir}" description="ensures output directory is available"/>
    <delete dir="${gen.source.dir}/com/company/rce/axis2" />
    <taskdef name="codegen" classname="org.apache.axis2.tool.ant.AntCodegenTask">
        <classpath>
            <fileset dir="tools\axis2-ant-plugin" includes="*.jar"/>
        </classpath>
    </taskdef>
    <codegen
    wsdlfilename=wsdl address
    output="${gen.source.dir}"
    packageName="com.company.rce.axis"
    generateservicexml="true"/>
</target>

我用包名称中的公司替换我的公司,用“wsdl地址”替换wsdl但我的问题在于我的src / gen文件夹中的包是“src.com.company”。 rce.axis”。我已经在这个工作了几天了,这完全让我感到困惑。您是否有一个地方或者您知道会导致src连接到packageName的开头?

2 个答案:

答案 0 :(得分:1)

从wdsl生成Java代码并避免使用src子文件夹的最佳方法是使用maven axis2-wsdl2code-maven-plugin

<properties>
    <axis2.version>1.7.4</axis2.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-kernel</artifactId>
        <version>${axis2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-adb</artifactId>
        <version>${axis2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
        <version>${axis2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>${axis2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-xmlbeans</artifactId>
        <version>${axis2.version}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
            <version>${axis2.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>wsdl2code</goal>
                    </goals>
                    <configuration>
                        <wsdlFile>src/main/resources/static/EXAMPLE.wsdl</wsdlFile>
                        <!-- Valid values are xmlbeans, adb, jibx, and none -->
                        <databindingName>xmlbeans</databindingName>
                        <packageName>com.example</packageName>
                        <outputDirectory>src/main/java</outputDirectory>
                        <flattenFiles>true</flattenFiles>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

答案 1 :(得分:0)

检查您的WSDL xmlns:src="someuri"。然后将其添加到您的codegen任务:namespaceToPackages="someuri=com.company.rce.axis"。一定要更换&#34; someuri&#34;使用实际WSDL文件中的任何内容。