WSDL2Code (Maven) 自动生成损坏的类(包)

问题描述 投票:0回答:6

我目前正在用 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 bug 之一。

如果有人知道这里到底出了什么问题,我将不胜感激。

提前致谢。

maven-2 apache-axis wsdl2code
6个回答
9
投票

版本 1.4.1 还有一些未真正记录的配置选项(查看 org.apache.axis2.maven2.wsdl2code.WSDL2CodeMojo 的源代码)...

只需使用 true - 这应该可以解决你的问题:-)


2
投票

这个问题已经很老了,所以我不知道你是否仍然遇到这个问题......

我建议使用 Axistools Maven Plugin,它在我们的案例中效果很好。


0
投票

也许“src”是 ${basedir} 的一部分?


0
投票

恐怕不是。即使是这样,也不应该出现奇怪的问题 - 路径将是正确的 testdirectory/src/test/testpackage,因此不会导致包名称出现问题。现在出现问题是因为它被放置在包不期望的目录中 - 它期望 ${basedir}/testdirectory/insert.package.here.divided.by./,但它得到 ${basedir}/testdirectory/src /插入.package.here.divided.by./.

src 不应出现在路径的该部分中。


0
投票

这与 maven/axis2 的那些“天才”(或用户)有关,他们实际上为你做出了决定......请看这个: [Axis2 邮件列表条目][1]

[1]: http://markmail.org/search/?q=[Axis2]+indrit#query:[Axis2 邮件列表条目]%20indrit+page:1+mid:a34wbp7l3pljagsz+state:results


0
投票

我最近遇到了同样的问题,并通过修改 targetSourceFolderLocation 解决了它,如下所示。 默认情况下,它指向 src 目录。因此它在您的情况下生成了名为 testdirectory.src.test.testpackage 的包结构。请使用下面的配置,它应该按预期工作。

<outputDirectory>${basedir}</outputDirectory>
<targetSourceFolderLocation>testdirectory</targetSourceFolderLocation>
© www.soinside.com 2019 - 2024. All rights reserved.