带有xmlbeans的Axis wsdl2java maven插件不包含resources文件夹

时间:2016-03-11 17:01:27

标签: maven cxf axis wsdl2code

我正在使用 axis2 为遗留应用程序重新生成我需要使用的更新Web服务的客户端代码。

作为一个遗留应用程序我想避免更改已经编写的代码,并重新生成类,因为它们是多年前由eclipse插件生成的,但是这次使用maven而不是日食。

所以我看到它们是使用axis2和xmlbeans生成的,我在maven插件中生成了配置:

<plugin>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
    <version>1.5.6</version>
    <executions>
        <execution>
            <id>TheirsWs</id>
            <goals>
                <goal>wsdl2code</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <packageName>it.theirs.ws</packageName>
                <wsdlFile>${basedir}/src/main/resources/theirWs.wsdl</wsdlFile>
                <generateServerSide>false</generateServerSide>
                <databindingName>xmlbeans</databindingName>
                <unpackClasses>true</unpackClasses>
            </configuration>
        </execution>
    </executions>
</plugin>

现在发生的事情是一件非常好的事情。 该插件在 generated-sources / axis2 / wsdl2code / resource 文件夹中生成 .class 文件,但maven不会将其添加到最终包中,从而导致{{ 1}}在调用webservice时。

2 个答案:

答案 0 :(得分:1)

我通过使用包含和排除文件夹的maven默认功能将资源文件夹添加到JAR中来解决问题。您的案例的解决方案将是:

<build>
<!-- This will the MAVEN to copy the entire folder, you can copy only the .class files -->
<resources>
        <resource>
            <directory>${project.build.directory}/generated-src/resources</directory>
            <includes>
                 <include>**/*</include>
            </includes>     
        </resource>
    </resources>
<plugin>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
    <version>1.5.6</version>
    <executions>
        <execution>
            <id>TheirsWs</id>
            <goals>
                <goal>wsdl2code</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <packageName>it.theirs.ws</packageName>
                <wsdlFile>${basedir}/src/main/resources/theirWs.wsdl</wsdlFile>
                <generateServerSide>false</generateServerSide>
                <databindingName>xmlbeans</databindingName>
                <!-- I add this line just to be easy to referenciate the souce -->
                <outputDirectory>${project.build.directory}/generated-src</outputDirectory>
                <unpackClasses>true</unpackClasses>
            </configuration>
        </execution>
    </executions>
</plugin>

答案 1 :(得分:0)

出现同样的问题,我从:

更改了Ant build.xml构建文件
<target depends="pre.compile.test" name="compile.src" if="jars.ok">
    <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true" destdir="${classes}" srcdir="${src}">
        <classpath refid="axis2.class.path"/>
    </javac>
</target>

要:

<target depends="pre.compile.test" name="compile.src" if="jars.ok">
    <javac debug="on" memoryMaximumSize="256m" memoryInitialSize="256m" fork="true" destdir="${classes}" srcdir="${src}">
        <classpath refid="axis2.class.path"/>
    </javac>
    <copy todir="${classes}">
        <fileset dir="${resources}"/>
    </copy>
</target>

新的复制任务将所有资源添加到目标类文件夹,以便生成的Jar将包含它们。

希望它有所帮助。