1

我有两个生成 Java 文件的插件。一个从 WSDL 文件生成代码,另一个从 XSD 模式文件生成代码。仅生成模式中的代码。

如果每个插件都有单独的 Eclipse 项目,那么所有源代码都会正确生成。但是我想在一个项目中同时使用两个插件来生成代码。

这是我的pom文件:

<plugins>

<!-- generate Java classes from schema files (binding files optional) -->
<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.8.2</version><!--$NO-MVN-MAN-VER$ -->
    <executions>
        <execution>
            <id>xsd_phase</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <bindingDirectory>${project.basedir}/xsd/</bindingDirectory>
                <schemaDirectory>${project.basedir}/xsd/</schemaDirectory>
                <generateDirectory>${project.basedir}/target/src/generated/java/</generateDirectory>
                <generatePackage>com.abc.xyz.jaxb</generatePackage>
                <forceRegenerate>true</forceRegenerate>
                <episode>false</episode>
                <removeOldOutput>true</removeOldOutput>
            </configuration>
        </execution>
    </executions>
</plugin>


<!-- generate Java classes from wsdl files -->
<plugin> 
    <groupId>org.jvnet.jax-ws-commons</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.1</version>
    <executions>
        <execution>
            <id>wsdl_phase</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <encoding>UTF-8</encoding>
                <packageName>com.abc.xyz.ws</packageName>
                <wsdlDirectory>${project.basedir}/wsdl/</wsdlDirectory>
                <sourceDestDir>${project.basedir}/target/src/generated/java/</sourceDestDir>
                <xnocompile>false</xnocompile>
            </configuration>
        </execution>
    </executions>
</plugin>
4

1 回答 1

3

只需将两者都包含在build/plugins项目的配置中。格式中没有任何内容可以POM防止将来自不同插件的两个不同目标绑定到同一阶段(generate-sources在您的情况下)。

唯一需要注意的是,当两个执行绑定到同一阶段时,它们将按照它们在 POM 中定义的顺序执行。换句话说,如果你要将你的代码片段复制粘贴到 POM 中,在 期间generate-sourcesxsd_phase将首先运行,然后是wsdl_phase.

于 2013-06-29T14:30:29.157 回答