2

我一直在寻找一个示例构建规范,其中将 codeartifacts 与 mvn 集成在一起。

这是我的buildpsec,以下是我的疑问。

  1. 由于我们无法在其中创建 aws 告诉我们提及服务器、镜像、配置文件和令牌的 setting.xml,我们如何将依赖项上传到工件存储库。
  2. 我的目标是只将结果 jar 而不是 .m2/* 所有依赖项放在人工制品存储库中,而且这是一个好方法吗?

buildspec file

version: 0.2 
phases: 
  install: 
    runtime-versions: 
      java: openjdk8 
    commands: 
      - pip3 install awscli --upgrade --user 
      - export CODEARTIFACT_TOKEN=`aws codeartifact get-authorization-token --domain $DOMAIN --domain-owner $ACCOUNT_ID --query authorizationToken --output text` 
  build: 
    commands: 
      - echo Build started on `date` 
      - mvn package 
artifacts: 
  type: zip 
  files: 
    - '/target/launcher-0.0.1-SNAPSHOT.jar' 
cache: 
  paths: 
    - '/root/.m2/**/*'.
4

1 回答 1

4

由于我们无法在其中创建 aws 告诉我们提及服务器、镜像、配置文件和令牌的 setting.xml,我们如何将依赖项上传到工件存储库。

事实上,你可以。你走在正确的轨道上。 mvn直到阶段才会执行build,因此install您可以编辑其设置,包括settings.xml. 最简单的方法是完全替换它们:

phases:
  install:
    commands:
      - cp ./codebuild-maven-settings.xml /root/.m2/settings.xml 

然后,您可以在自定义文件中使用您的CODEARTIFACT_TOKEN环境变量。settings.xml

为了使此解决方案起作用,您需要将该codebuild-maven-settings.xml文件放在存储库的根目录中。这可能不是最优雅的,如果你想让它尽可能顺利,我建议将文件放在 S3 上并首先下载它。

于 2020-12-14T14:48:07.650 回答