多个maven生成源

时间:2012-10-29 17:12:57

标签: maven maven-plugin

我有两个生成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>

1 个答案:

答案 0 :(得分:2)

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

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