1

我有一个 Web 服务项目,其中:

  • src/main/precode中,我有手动编写的 Java 类,并使用cxf-java2ws-plugin插件生成 WSDL 文件。
  • src/main/java,我有我使用cxf-codegen-plugin插件从 WSDL 生成的最终类。

问题是要生成WSDL,似乎cxf-java2ws-plugin需要编译类,所以我必须在编译阶段之后执行插件。所以,我还需要cxf-codegen-plugin在编译阶段之后执行,因为它需要其他插件生成的 WSDL 文件。但是,为了编译我的 SEI(即在编译阶段之前),我需要生成的类cxf-codegen-plugin,所以我被卡住了。

我曾考虑将其拆分为两个项目,但我正在寻找一个项目解决方案。我认为如果有可能编译两次,它将解决问题。

谢谢

4

2 回答 2

0

插件的每次执行都会phase按照声明的顺序添加到。

pluginA:exectionA:compile
pluginC:exectionA:compile
pluginB:exectionA:compile

将生成一个compile具有默认定义<sourceDirectory></sourceDirectory> (src/main/java )加上执行的A, C and B.

只需在插件声明(也绑定到)之后添加maven-compiler-plugin适当<configuration>的 in的执行。compilecxf-java2ws-plugincompile

pom.xml添加目录到:

<sourceDirectory></sourceDirectory>
Element : sourceDirectory
3.0.0+
This element specifies a directory containing the source of the 
 project. The generated build system will compile the source in 
 this directory when the project is built. The path given is 
 relative to the project descriptor.`

您还可以配置compiler plugin.

于 2012-08-08T10:56:55.380 回答
0

我对 cxf maven 插件了解不多,因此正确配置插件执行的输入和输出目录取决于您。话虽如此,这就是我尝试这个的方式(未经测试!)。

  • 将执行添加到编译器插件配置以运行compile目标。将此执行绑定到generate-sources阶段(因为没有更好的东西)。执行 ID 应该类似于“precode-compile”。使用<includes>编译目标参数指定/src/main/precode目录作为输入。
  • 使用在上述步骤中生成的类作为输入,将其配置cxf-java2ws-plugin为在该阶段运行。process-sources
  • 将 配置为cxf-codegen-plugin在该阶段也运行process-sources,指定 WSDL 作为输入。确保在 java2ws 插件配置之后有此配置,因为绑定到同一阶段的目标按照它们在 POM 中定义的顺序运行。

如果我正确理解了您的用例,我认为绑定的默认编译目标(执行 ID“default-compile”)现在可以了。如果我不太明白,至少你有一些想法可以尝试。

如果您不确定如何为单个插件配置多个执行,请查看Maven 文档

于 2012-08-08T21:12:56.427 回答