如何跳过pom.xml中Swagger Codegen Maven插件?skip标签失效问题
解决swagger-codegen-maven-plugin的标签不生效问题
问题描述
需求为:在pom.xml中默认设置swagger-codegen-maven-plugin跳过执行(值为true),在check.sh脚本执行时设为false。但已在插件execution的configuration中添加<skip>true</skip>标签,该标签未生效。
现有pom.xml属性配置
<properties> <swagger.codegen.plugin.version>3.0.0-rc0</swagger.codegen.plugin.version> <swagger.codegen.plugin.version>3.0.3</swagger.codegen.plugin.version> <swagger.codegen.generators.version>1.0.3</swagger.codegen.generators.version> <swagger.lang>jaxrs-jersey</swagger.lang> </properties>
现有check.sh脚本
mvn validate -Dmaven.exec.skip -DskipTests -P copyright,license
现有swagger-codegen-maven-plugin配置
<plugin> <groupId>io.swagger.codegen.v3</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>${swagger.codegen.plugin.version}</version> <executions> <execution> <id>generate-folder-pojo</id> <phase>validate</phase> <goals> <goal>generate</goal> </goals> <configuration> <skip>true</skip> <inputSpec>${swagger.inputSpec}/folder_definition.json</inputSpec> <language>${swagger.lang}</language> <templateDirectory>${swagger.api}/template</templateDirectory> <verbose>false</verbose> </configuration> </execution> </executions> </plugin>
解决步骤
1. 在pom.xml中定义全局跳过属性
在properties节点新增自定义属性,默认设为true,用于全局控制插件是否跳过:
<properties> <swagger.codegen.plugin.version>3.0.3</swagger.codegen.plugin.version> <!-- 注意:删除重复的版本定义,保留最新的3.0.3即可 --> <swagger.codegen.generators.version>1.0.3</swagger.codegen.generators.version> <swagger.lang>jaxrs-jersey</swagger.lang> <swagger.codegen.skip>true</swagger.codegen.skip> <!-- 新增全局控制属性 --> </properties>
2. 修改插件配置,引用全局属性
将插件configuration里的硬编码<skip>true</skip>替换为引用全局属性:
<plugin> <groupId>io.swagger.codegen.v3</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>${swagger.codegen.plugin.version}</version> <executions> <execution> <id>generate-folder-pojo</id> <phase>validate</phase> <goals> <goal>generate</goal> </goals> <configuration> <skip>${swagger.codegen.skip}</skip> <!-- 引用全局属性 --> <inputSpec>${swagger.inputSpec}/folder_definition.json</inputSpec> <language>${swagger.lang}</language> <templateDirectory>${swagger.api}/template</templateDirectory> <verbose>false</verbose> </configuration> </execution> </executions> </plugin>
3. 修改check.sh脚本,动态覆盖属性值
在脚本执行时,通过-D参数覆盖全局属性为false,确保执行脚本时插件正常运行:
mvn validate -Dswagger.codegen.skip=false -Dmaven.exec.skip -DskipTests -P copyright,license
额外注意点
- 原pom.xml中重复定义了
swagger.codegen.plugin.version,Maven会取最后一个定义的版本,建议删除重复项避免混淆。 - 若问题仍存在,可尝试升级swagger-codegen-maven-plugin至更稳定的版本(如3.0.46),确保插件对
<skip>参数的支持正常。
内容的提问来源于stack exchange,提问作者vaishnavi banait
相关产品推荐
相关产品推荐

