0

我在使用 AWS CodeBuild 时遇到了一点问题。我们在 Github ( https://github.com/ibissource/mvn-repo ) 上将 ibis 适配器框架作为 Maven 存储库托管。

我正在使用该框架作为我正在处理的项目的依赖项。在我的 pom.xml 文件中,我设置了版本属性和存储库/依赖项。

当我在本地运行 Maven 构建时,它可以轻松找到依赖项(它会发出有关无法传输元数据的警告),但它能够毫无问题地构建。

编辑:它能够在本地构建,因为我将文件缓存在我的 .m2 存储库中.. 重命名文件夹后,我能够重现问题

当我将更改提交到 CodeCommit 并触发 CodePipeline 时,一旦到达 CodeBuild,它几乎立即失败并出现以下错误:

错误] 无法在项目 api 上执行目标:无法解析项目 com.priooo:api:war:0.0.29 的依赖项:无法在 org.ibissource:ibis-adapterframework-core:jar:7.0-B4-SNAPSHOT 收集依赖项: 无法读取 org.ibissource:ibis-adapterframework-core:jar:7.0-B4-SNAPSHOT 的工件描述符:无法将工件 org.ibissource:ibis-adapterframework-core:pom:7.0-B4-SNAPSHOT 从/到 ibis 传输-mvn-repo ( https://github.com/ibissource/mvn-repo/raw/master/releases ):收到致命警报:protocol_version -> [帮助 1]

<properties>
     <iaf.version>7.0-RC3-SNAPSHOT</iaf.version>
</properties>

<repositories>
    <repository>
        <id>ibis-mvn-repo</id>
        <url>${ibissource.maven.repository.https}/releases</url>
    </repository>
    <repository>
        <id>ibis-mvn-repo-snapshots</id>
        <url>${ibissource.maven.repository.https}/snapshots</url>
    </repository>
</repositories>

在依赖项中,我有以下内容

<dependency>
        <groupId>org.ibissource</groupId>
        <artifactId>ibis-adapterframework-core</artifactId>
        <version>${iaf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.ibissource</groupId>
        <artifactId>ibis-adapterframework-larva</artifactId>
        <version>${iaf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.ibissource</groupId>
        <artifactId>ibis-adapterframework-webapp</artifactId>
        <version>${iaf.version}</version>
        <type>war</type>
    </dependency>

解决方案

似乎 Maven 不喜欢 Github 对原始文件的重定向。我们已将 Github URL 更改为原始 URL,它似乎解决了问题

<ibissource.maven.repository.https>https://raw.githubusercontent.com/ibissource/mvn-repo/master</ibissource.maven.repository.https>
4

1 回答 1

4

当您将 Maven 与 AWS CodeBuild 提供的 Java 构建环境一起使用时,Maven 从位于https://repo1.maven.org/maven2的安全中央 Maven 存储库中提取构建和插件依赖项。即使您的构建项目的 pom.xml 文件明确声明要使用其他位置,也会发生这种情况。

您需要将 AWS Codebuild 中的 settings.xml 替换为您的 settings.xml。

version 0.2

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

参考:https ://docs.aws.amazon.com/codebuild/latest/userguide/troubleshooting.html#troubleshooting-maven-repos

于 2018-02-26T09:46:43.967 回答