You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置maven-jaxb2-plugin使其不参与主构建周期?

我之前也被这个问题折腾过,每次注释取消注释pom.xml太麻烦了,给你几个简洁靠谱的方案,选适合你的就行:

方案1:取消插件的自动构建阶段绑定(最省心)

maven-jaxb2-plugin默认会绑定到generate-sources阶段,所以常规构建(比如mvn package)会自动触发它。你只需要在插件的execution配置里,把phase显式设为none,就能取消这个自动绑定——这样只有手动执行mvn jaxb2:generate时插件才会运行,常规构建完全不会碰它。

示例配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>你的插件版本号</version>
            <executions>
                <execution>
                    <id>generate-jaxb-sources</id>
                    <!-- 关键配置:取消自动绑定到构建阶段 -->
                    <phase>none</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <!-- 你的WSDL相关配置 -->
                        <wsdlDirectory>src/main/resources/wsdl</wsdlDirectory>
                        <!-- 其他自定义参数,比如生成代码的包名等 -->
                        <packageName>com.yourcompany.wsdl.generated</packageName>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

使用效果:

  • 手动执行 mvn jaxb2:generate,插件正常生成源码
  • 执行 mvn package 时,插件完全不会被触发
方案2:用Maven Profile隔离插件

把jaxb2插件放到一个自定义的Profile里,默认不激活这个Profile。只有当你手动指定Profile时,插件才会生效。

示例配置:

<profiles>
    <profile>
        <id>generate-jaxb-code</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jvnet.jaxb2.maven2</groupId>
                    <artifactId>maven-jaxb2-plugin</artifactId>
                    <version>你的插件版本号</version>
                    <executions>
                        <execution>
                            <id>generate-sources</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                            <configuration>
                                <!-- 你的WSDL配置 -->
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

使用方式:

  • 手动生成源码:mvn jaxb2:generate -P generate-jaxb-code(或者直接执行 mvn generate-sources -P generate-jaxb-code,因为插件绑定了默认阶段)
  • 常规构建 mvn package 时,因为Profile默认不激活,插件完全不参与构建流程
方案3:用属性开关控制插件跳过

在插件配置里绑定skip参数到一个Maven属性,默认开启跳过(常规构建时不运行),手动生成时通过命令行参数关闭跳过。

示例配置:

<properties>
    <!-- 默认开启跳过jaxb2插件 -->
    <jaxb2.plugin.skip>true</jaxb2.plugin.skip>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>你的插件版本号</version>
            <configuration>
                <!-- 绑定skip到自定义属性 -->
                <skip>${jaxb2.plugin.skip}</skip>
                <!-- 你的WSDL配置 -->
            </configuration>
        </plugin>
    </plugins>
</build>

使用方式:

  • 手动生成源码:mvn jaxb2:generate -Djaxb2.plugin.skip=false
  • 常规构建 mvn package 时,因为默认属性值为true,插件会自动跳过

这三个方案里,方案1应该是最省心的,配置一次后不用每次加额外参数,完全符合你“手动触发才生成,常规构建自动忽略”的需求。

内容的提问来源于stack exchange,提问作者Gonzalo Calvo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:54:38