Aam*_*han 4 java maven jaxws-maven-plugin
<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>
Run Code Online (Sandbox Code Playgroud)
上面的XML代码段来自Java项目中的POM文件。在此代码段中,我定义了jaxws-maven-plugin以使用wsdl文件生成SEI代码并将其放置在src / main / java目录中。此插件绑定到generate-sources阶段,并且工作正常。
我想这样做,以便如果我直接发布插件,请使用:
mvn jaxws:wsimport
Run Code Online (Sandbox Code Playgroud)
它应将文件放在上述文件夹中。从插件参考站点(https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html),我不知道如何将参数(sourceDestDir)作为命令传递行参数。有办法我可以做到吗?
您正在尝试在源文件夹下生成源src/main/java。除非有非常充分的理由,否则不要这样做。所有生成的内容应始终放置在构建目录下(target默认情况下),而不应受版本控制。build-helper-maven-plugin:add-source如果插件本身还没有做,您总是可以使用来将生成的源添加为源文件夹。
为了能够直接在命令行上设置参数,插件需要定义一个用户属性。但是,org.jvnet.jax-ws-commons:jaxws-maven-plugin并未为sourceDestDir参数定义用户属性。这很明显,因为文档没有设置“用户属性”。
您也可以在源代码中找到它:
Run Code Online (Sandbox Code Playgroud)@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>
Run Code Online (Sandbox Code Playgroud)
最好使用${project.build.directory}/some/path代替src/main/java。
配置插件以使用此Maven属性:
<configuration>
<sourceDestDir>${jaxws.sourceDestDir}</sourceDestDir>
</configuration>
Run Code Online (Sandbox Code Playgroud)如果要覆盖它,现在可以使用在命令行上直接进行覆盖-Djaxws.sourceDestDir=/my/new/value。该系统属性将优先于Maven属性的值。
| 归档时间: |
|
| 查看次数: |
4798 次 |
| 最近记录: |