我目前正在使用Axis2替换IBM WebService框架。从WSDL文件生成代码时,我使用Maven插件WSDL2Code。但是,创建的代码总是错误的。或者更确切地说,包名称总是错误的,这反过来使得每个方法都被称为不可调用(在eclipse中创建更多错误,高达10.000+错误)。
这是一个实际发生的例子(这只是我专门为获得建议而做的一个例子):
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>Test</id>
<goals>
<goal>wsdl2code</goal>
</goals>
<configuration>
<packageName>test.testpackage</packageName>
<databindingName>xmlbeans</databindingName>
<wsdlFile>${basedir}/wsdl/service.wsdl</wsdlFile>
<outputDirectory>${basedir}/testdirectory</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
理论上,这应该在testdirectory / test / testpackage目录中生成包名为“test.testpackage”的代码。但是,它会在testdirectory.src.test.testpackage目录中创建以下包:Src.test.testpackage。它总是在包名和目录中添加“src” - 如果我将包名更改为src.test.testpackage,它将生成以下包:src.src.test.testpackage。
这当然会导致一个巨大的问题,因为每个生成的文件都有以下错误: “声明的包”src.test.testpackage“与预期的包不匹配 “src.src.test.testpackage”
我在这里完全失败了。我根本找不到任何理由为什么它应该在任何地方添加“src”。我注意到一个自动生成的build.xml文件,其中包含一个名为sourcedirectory = x / src(或类似的东西)的值,但我无法做任何事情来影响这个值(尝试更改它然后保存文件没有区别很明显,因为下次我运行maven时它会再次生成。
哦,我通常使用命令“mvn clean install”和WSDL2Code的1.4.1版本,因此它不是旧的wsdl2code:wsdl2code错误之一。
如果有人知道这里究竟出了什么问题,我会非常感激。
提前致谢。
答案 0 :(得分:9)
版本1.4.1还有一些未真正记录的配置选项(请查看org.apache.axis2.maven2.wsdl2code.WSDL2CodeMojo的源代码)......
只需使用&lt; flattenFiles&gt; true&lt; / flattenFiles&gt; - 这应该可以解决你的问题: - )
答案 1 :(得分:2)
这个问题很老了,所以我不知道你是否还有这个问题...
我建议使用Axistools Maven Plugin代替它,它在我们的案例中效果很好。
答案 2 :(得分:0)
也许'src'是$ {basedir}的一部分?
答案 3 :(得分:0)
我不敢。即使是这样,也不应该出现奇怪的问题 - 然后路径将是正确的testdirectory / src / test / testpackage,因此导致包名称没有问题。现在出现问题是因为它被放置在包不期望的目录中 - 它需要$ {basedir} /testdirectory/insert.package.here.divided.by./,而是获得$ {basedir} / testdirectory / src /insert.package.here.divided.by ./.
src不应出现在路径的那一部分。
答案 4 :(得分:0)
这与maven / axis2的(或用户)的“天才”有关,它实际上为你做出了决定......看到这个: [Axis2邮件列表条目] [1]
[1]:http://markmail.org/search/?q=[Axis2]+indrit#query:[Axis2邮件列表条目]%20indrit + page:1 + mid:a34wbp7l3pljagsz + state:results