<build>
<plugins>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<id>generate-sei</id>
<configuration>
<sourceDestDir>${project.basedir}/src/main/java</sourceDestDir>
</configuration>
</execution>
</executions>
<dependencies>...</dependencies>
</plugin>
</plugins>
</build>
上面的XML代码段来自Java项目中的POM文件。在此代码段中,我定义了jaxws-maven-plugin以使用wsdl文件生成SEI代码并将其放置在src / main / java目录中。此插件绑定到generate-sources阶段,并且工作正常。
我想这样做,以便如果我直接发布插件,请使用:
mvn jaxws:wsimport
它应将文件放在上述文件夹中。从插件参考站点(https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html),我不知道如何将参数(sourceDestDir)作为命令传递行参数。有办法我可以做到吗?
您正在尝试在源文件夹下生成源src/main/java
。除非有非常充分的理由,否则不要这样做。所有生成的内容都应始终放置在build目录下(target
默认情况下),并且不受版本控制。build-helper-maven-plugin:add-source
如果插件本身还没有做的话,您总是可以使用来将生成的源添加为源文件夹。
为了能够直接在命令行上设置参数,插件需要定义一个用户属性。但是,org.jvnet.jax-ws-commons:jaxws-maven-plugin
并未为sourceDestDir
参数定义用户属性。这很明显,因为文档没有设置“用户属性”。
您也可以在源代码中找到它:
@Parameter(defaultValue = "${project.build.directory}/generated-sources/wsimport") private File sourceDestDir;
@Parameter
用于声明Maven插件参数的注释没有对应的property
。
因此,您将需要具备以下条件:
定义一个Maven属性jaxws.sourceDestDir
与值${project.basedir}/src/main/java
与
<properties>
<jaxws.sourceDestDir>${project.basedir}/src/main/java</jaxws.sourceDestDir>
</properties>
最好是使用${project.build.directory}/some/path
而不是src/main/java
。
配置插件以使用此Maven属性:
<configuration>
<sourceDestDir>${jaxws.sourceDestDir}</sourceDestDir>
</configuration>
如果您想覆盖它,现在可以使用在命令行上直接覆盖它-Djaxws.sourceDestDir=/my/new/value
。该系统属性将优先于Maven属性的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句