我正在尝试使用 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>
答案 0 :(得分:19)
这看起来非常像我(在其中一个项目中)成功配置该插件的方式;我希望这能奏效。 (我相信你可以省略<sourceRoot>
;默认设置就是你说的那个。)
我唯一能想到的是,如果您将该插件配置放在非活动Maven配置文件中,或者(更有可能)放在<pluginManagement>
部分而不是直接<plugins>
部分; pluginManagement部分会覆盖插件配置的各个方面,但实际上并未启用它们。 (但它会影响显式使用;我知道你不想这样做。)
答案 1 :(得分:2)
至少在我的情况下,我认为它也没有生成源代码,但它实际上是。问题是文件夹target / generated / cxf被Eclipse指定为源文件夹,我没有手动完成。所以源代码是我的项目的顶部,在包结构中,而不是在下面的文件夹结构中,这是我正在寻找并期待它的位置。
答案 2 :(得分:0)
在我的情况下,只要我有旧目标目录(在<sourceRoot>/path/to/target</sourceRoot>
中定义),就没有生成任何内容。只有在手动删除目标文件夹后,插件实际上才开始生成源。