我有一个网络服务项目:
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
生成的类,所以我被卡住了。
我已经考虑过将其分成两个项目,但我正在寻找一个项目解决方案。我认为,如果有可能编译两次,它将解决问题。
由于
答案 0 :(得分:0)
每次执行插件时,都按照声明的顺序添加到phase
。
pluginA:exectionA:compile
pluginC:exectionA:compile
pluginB:exectionA:compile
生成compile
,其默认定义为<sourceDirectory></sourceDirectory> (src/main/java )
,加上执行A, C and B
。
只需在声明maven-compiler-plugin
插件(也绑定到{{1}之后“<configuration>
中compile
添加cxf-java2ws-plugin
的执行即可。 }})。
在compile
中将目录添加到:
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.`
。
答案 1 :(得分:0)
我对cxf maven插件了解不多,因此获取正确配置的插件执行的输入和输出目录取决于您。话虽如此,这就是我如何尝试这种方式(未经测试!)。
compile
目标。将此执行绑定到generate-sources
阶段(因为缺少更好的东西)。执行ID应该类似&#34; precode-compile&#34;。使用<includes>
参数进行编译目标,将/src/main/precode
目录指定为输入。cxf-java2ws-plugin
配置为在process-sources
阶段运行。cxf-codegen-plugin
配置为在process-sources
阶段运行,并将WSDL指定为输入。确保在java2ws插件配置之后有这个配置,因为绑定到同一阶段的目标按照它们在POM中定义的顺序运行。如果我正确理解您的用例,我认为默认的编译目标(执行ID&#34;默认编译&#34;)绑定现在可以正常。如果我不太了解,至少你有想法尝试的想法。
如果您不确定如何为单个插件配置多个执行,请查看Maven docs。