
cfje/maven-resourceMaven Concourse Resource是专为Concourse CI/CD平台设计的资源类型,旨在无缝集成Maven构建流程。作为Concourse资源,它允许管道与Maven项目、仓库进行交互,自动化处理版本检测、依赖管理、构建执行和产物输出,减少手动配置Maven任务的复杂性,提升CI/CD管道中Maven相关流程的可维护性和一致性。
在Concourse pipeline.yml中定义Maven Concourse Resource资源:
yamlresources: - name: maven-project type: maven-concourse-resource source: group_id: com.example artifact_id: demo-project version_pattern: 1.0.* # 匹配1.0.x版本 repository_url: [***] username: ((maven-repo-username)) # 从Concourse变量中获取认证信息 password: ((maven-repo-password)) maven_settings: | # 自定义Maven settings配置 <settings> <mirrors> <mirror> <id>central</id> <url>[***]</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> </settings>
| 参数名 | 描述 | 是否必填 | 默认值 |
|---|---|---|---|
| group_id | Maven项目的Group ID | 是 | - |
| artifact_id | Maven项目的Artifact ID | 是 | - |
| version_pattern | 版本匹配模式(支持通配符*),用于检测符合条件的版本 | 否 | latest(最新版本) |
| repository_url | Maven仓库URL(支持HTTP/HTTPS) | 是 | - |
| username | 仓库认证用户名 | 否 | - |
| password | 仓库认证密码 | 否 | - |
| maven_settings | 自定义Maven settings.xml内容,用于配置镜像、代理、认证等 | 否 | 默认settings |
| snapshot_repository_url | 快照版本仓库URL(若与release仓库不同) | 否 | 与repository_url一致 |
| cache | 是否启用依赖缓存 | 否 | true |
| cache_dir | 依赖缓存目录(Maven本地仓库路径) | 否 | /root/.m2/repository |
在Concourse job中使用get步骤获取指定版本的Maven项目或依赖:
yamljobs: - name: build-project plan: - get: maven-project trigger: true # 当检测到新版本时自动触发job params: skip_download: false # 是否跳过下载源码/依赖(默认false) - task: compile config: platform: linux image_resource: type: registry-image source: {repository: maven, tag: 3.8.5-openjdk-11} inputs: - name: maven-project # 从资源获取的输入目录 run: path: sh args: - -c - | cd maven-project mvn clean compile # 执行Maven编译
使用put步骤推送构建产物到Maven仓库:
yamljobs: - name: release-project plan: - get: maven-project - task: package config: platform: linux image_resource: {repository: maven, tag: 3.8.5-openjdk-11} inputs: [{name: maven-project}] outputs: [{name: package}] # 输出构建产物目录 run: path: sh args: - -c - | cd maven-project mvn clean package -DskipTests cp target/*.jar ../package/ - put: maven-project # 推送产物到仓库 params: file: package/*.jar # 产物文件路径 version: 1.0.0 # 指定发布版本号(若不指定则自动检测) classifier: app # 可选,指定Maven构件分类器
通过version_pattern实现动态版本检测,支持语义化版本匹配:
yamlsource: version_pattern: 1.0.*-SNAPSHOT # 匹配1.0.x快照版本 # 或使用正则表达式模式(需指定version_regex: true) version_pattern: ^1\.0\.\d+(-SNAPSHOT)?$ version_regex: true






manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务