18

我正在尝试让cxf-codegen-plugin从我的 wsdl 文件中生成源代码。当调用 wsdl2java 手册时,会生成所需的类,但是当使用mvn generate-sources时没有任何反应,并且我收到消息“项目不需要目标”。直接调用插件没有帮助。

我的 poms 的摘录如下:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/MyServiceInterface.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>
4

3 回答 3

23

这看起来很像我(成功)在我的一个项目中配置该插件的方式;我希望这能奏效。(我相信你可以省略<sourceRoot>; 的默认设置就是你所说的那个。)

我唯一能想到的是,如果您将该插件配置放在非活动的 Maven 配置文件中,或者(更有可能)放在<pluginManagement>部分而不是直接<plugins>部分中;pluginManagement 部分覆盖插件配置的各个方面,但实际上并未启用它们以供使用。(但是它确实会影响显式使用;我知道您不想这样做。)

于 2012-04-15T18:12:27.723 回答
2

至少在我的情况下,我认为它没有生成源代码,但实际上是。问题是文件夹 target/generated/cxf 被 Eclipse 指定为源文件夹,我没有手动执行。所以源代码位于我项目的顶部,在包结构中,而不是在下面的文件夹结构中,这是我一直在寻找和期待的地方。

于 2012-04-27T15:39:59.327 回答
0

在我的情况下,只要我有旧的目标目录(在 中定义<sourceRoot>/path/to/target</sourceRoot>)就不会生成任何东西。只有在手动删除目标文件夹后,插件才真正开始生成源。

于 2016-06-26T13:05:38.183 回答