我使用axis2为我需要使用的更新use服务重新生成客户端代码,用于遗留应用程序。
作为一个遗留应用程序,我希望避免更改已经编写的代码,并在许多年前使用eclipse插件生成类时重新生成它们,但这次使用的是maven而不是eclipse。
因此,我看到它们是使用axis2和xmlbean生成的,并在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/ axis2 / wsdl2code / resource文件夹中生成一个.class文件,但是maven没有将它添加到最终包中,这将导致在调用when服务时出现ClassNotFoundException。
发布于 2017-03-30 15:00:13
我通过使用包含和排除文件夹的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>
发布于 2016-04-12 11:15:23
由于同样的问题,我将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将包含它们。
希望能帮上忙。
https://stackoverflow.com/questions/35945891
复制相似问题