我们在 GitLab 中配置了一个 monorepo。结构为:
-project1
-pom.xml
-project2
-pom.xml
-project3
-pom.xml
-project4
-pom.xml
-settings.xml
-gitlab-ci.yaml
管道如下所示:
- mvn clean install -f project1/pom.xml -s settings.xml -DskipTests=true -DskipIT=true --batch-mode
- ./jfrog rt mvn "clean install -f project1/pom.xml -s settings.xml -DskipTests=true
-DskipIT=true --batch-mode "artifactory_configuration.yml --build-name=xxxx --build-number=$CI_JOB_ID
设置.xml:
<mirrors>
<mirror>
<id>ecd-central</id>
<mirrorOf>*</mirrorOf>
<url>http://repository111.int/content/groups/public-ecd-2.0-cdf</url>
</mirror>
</mirrors>
似乎当jfrog命令运行时,它会忽略镜像,任何想法为什么:
Failed to read artifact descriptor for org.apache.felix:maven-bundle-plugin:jar:2.4.0:
Could not transfer artifact org.apache.felix:maven-bundle-plugin:pom:2.4.0 from/to
artifactory-release (http://swf-artifactory.int/artifactory/com.fc-snapshot): transfer failed
for http://swf-artifactory.int/artifactory/com.fc-snapshot/org/apache/felix/maven-bundle-
plugin/2.4.0/maven-bundle-plugin-2.4.0.pom, status: 409 Conflict -> [Help 2]
JFrog CLI 允许您在不使用 Maven 的settings.xml
文件的情况下配置 Artifactory 服务器和存储库。如果已配置,它将覆盖settings.xml
文件中的服务器。
基本上,您可以在单个 CLI 命令中配置 Artifactory 服务器和存储库,并将配置用于构建。
您可以通过以下 2 种方式配置服务器:
-
交互式:在本地计算机中,在根工作区中运行
jfrog rt mvn-config
。此命令创建.jfrog/projects/maven.yaml
可以提交到项目源代码的文件。 -
非交互式:在 GitLab 脚本中,在根工作区中运行:
该命令将创建将在生成命令中使用的jfrog rt mvn-config --server-id-resolve --repo-resolve-releases= --repo-resolve-snapshots= --server-id-deploy= --repo-deploy-releases=
.jfrog/projects/maven.yaml
。
最终,您可以在不提供设置的情况下运行构建命令.xml文件:
/jfrog rt mvn "clean install -f project1/pom.xml -DskipTests=true
-DskipIT=true --batch-mode "artifactory_configuration.yml --build-name=xxxx --build-number=$CI_JOB_ID
阅读更多:
- 运行 Maven 构建
- 完全控制您的 Maven 部署
- 快速入门指南:Maven 和 Gradle