Azure DevOps Java Maven自动化流水线如何设置公共父基础仓库?
Java Maven 基础框架仓库搭建及类找不到问题解决方案
一、优先排查基础框架打包配置问题
绝大多数类找不到报错都是打包环节配置错误导致,先检查基础框架仓库的pom.xml配置:
- 确认打包类型配置正确
<packaging>jar</packaging>
- 如果你用了
spring-boot-maven-plugin打包,必须加classifier配置,默认打出的可执行JAR类路径和普通依赖JAR不兼容,其他项目依赖后会找不到类:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 给可执行JAR加独立后缀,保留普通JAR作为依赖包 --> <classifier>exec</classifier> </configuration> </plugin>
- 确认所有要导出的工具类、DB连接类等代码都存放在
src/main/java目录下,没有被maven的exclude过滤规则排除。
二、配置Azure DevOps私有Maven仓库
无需手动传输JAR包,直接用Azure DevOps自带的Artifacts Feed托管基础框架包:
- 在Azure DevOps项目中创建Artifacts Feed,配置权限让所有关联项目的流水线都有读写权限
- 在基础框架的
pom.xml中配置发布地址:
<distributionManagement> <repository> <id>azure-artifacts</id> <url>https://pkgs.dev.azure.com/你的组织名/你的项目名/_packaging/你的Feed名/maven/v1</url> </repository> </distributionManagement>
- 配置基础框架的流水线,添加Maven任务执行
deploy命令,代码提交后自动将最新版本的JAR发布到私有Feed中。
三、业务项目依赖配置
所有需要引用基础框架的业务仓库,按以下方式配置:
- 先在
pom.xml中添加私有仓库地址:
<repositories> <repository> <id>azure-artifacts</id> <url>https://pkgs.dev.azure.com/你的组织名/你的项目名/_packaging/你的Feed名/maven/v1</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
- 添加基础框架依赖,替换为你自己的坐标信息:
<dependency> <groupId>com.yourcompany</groupId> <artifactId>common-framework</artifactId> <version>1.0.0</version> </dependency>
- 业务项目的流水线配置Maven的
settings.xml,添加Azure Artifacts的认证信息,保证流水线有权限拉取私有仓库的依赖。
四、残留报错排查
如果仍然提示类找不到,按以下顺序排查:
- 检查基础框架版本号是否正确,确认对应版本已经成功发布到Artifacts Feed,清理本地Maven缓存后重新拉取
- 解压业务项目依赖的基础框架JAR包,确认里面是否存在缺失的类文件,不存在则需要调整基础框架的打包过滤规则
- 执行
mvn dependency:tree命令排查依赖冲突,确认基础框架的传递依赖没有被其他依赖覆盖版本导致类不兼容。
内容的提问来源于stack exchange,提问作者Eyal
相关产品推荐
相关产品推荐

