执行mvn clean install时无法解析openapi-generator依赖的问题
执行mvn clean install时出现依赖解析错误,提示无法解析org.openapitools:openapi-generator:jar:sources:${openapi-generator-version},错误栈如下:
org.eclipse.core.runtime.CoreException: Could not resolve artifact org.openapitools:openapi-generator:jar:sources:${openapi-generator-version}
at org.eclipse.m2e.core.internal.embedder.MavenImpl.lambda$4(MavenImpl.java:828)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:182)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:117)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:103)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:796)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:773)
当前pom.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>com.company.project</groupId> <artifactId>company</artifactId> <version>0.0.1-SNAPSHOT</version> <name>company</name> <description>Demo project for Spring Boot</description> <properties> <java.version>8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.openapitools</groupId> <artifactId>openapi-generator</artifactId> <version>6.2.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--https://openapi-generator.tech/docs/plugins/--> <plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <!-- RELEASE_VERSION --> <version>5.1.0</version> <!-- /RELEASE_VERSION --> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/test.yaml</inputSpec> <output>${project.build.directory}/</output> <generateSupportingFiles>true</generateSupportingFiles> <generatorName>spring</generatorName> <strictSpec>true</strictSpec> <generateApiTests>false</generateApiTests> <generateModelTests>false</generateModelTests> <configOptions> <controllerThrowsExceptions>java.io.IOException,com.example.NotFoundException</controllerThrowsExceptions> <library>spring-mvc</library> <interfaceOnly>true</interfaceOnly> <skipDefaultInterface>true</skipDefaultInterface> <useBeanValidation>true</useBeanValidation> <useClassLevelBeanValidation>false</useClassLevelBeanValidation> <useTags>true</useTags> <java8>true</java8> <useOptional>false</useOptional> <hideGenerationTimestamp>true</hideGenerationTimestamp> <dateLibrary>java8</dateLibrary> <bigDecimalAsString>true</bigDecimalAsString> <useBeanValidation>true</useBeanValidation> <apiPackage>${codegen.api.package.name}</apiPackage> <modelPackage>${codegen.model.page.name}</modelPackage> </configOptions> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
疑问:该依赖是否部署在Nexus上?
问题原因及解决办法
1. 版本变量未定义
错误日志中的${openapi-generator-version}是未定义的Maven属性,导致Maven无法解析具体版本。
解决:
- 在pom.xml的
<properties>块中添加版本属性:
<properties> <java.version>8</java.version> <openapi-generator-version>6.2.0</openapi-generator-version> </properties>
- 统一插件和依赖版本:将
openapi-generator-maven-plugin的版本改为6.2.0,或用定义的属性统一引用:<version>${openapi-generator-version}</version>,避免版本不一致引发的依赖冲突。
2. 依赖仓库配置问题
OpenAPI Generator的包默认发布在Maven中央仓库,只要你的Maven配置了中央仓库(默认已配置)即可拉取。如果公司使用Nexus作为代理仓库:
- 检查Nexus的代理仓库配置,确认中央仓库已被正确代理
- 在Nexus中搜索该包,确认是否已同步;若未同步,联系管理员触发同步或手动上传包到Nexus
3. 额外检查点
- 执行
mvn clean install -U强制更新仓库元数据,避免本地缓存导致的解析问题 - 检查本地Maven的
settings.xml,确认仓库配置未被镜像拦截,能正常访问中央仓库或公司Nexus
内容的提问来源于stack exchange,提问作者codeNEWBYE

