执行命令时出错:mvn test。原因:退出状态 1 - AWS

Posted

技术标签:

【中文标题】执行命令时出错:mvn test。原因:退出状态 1 - AWS【英文标题】:Error while executing command: mvn test. Reason: exit status 1 - AWS 【发布时间】:2020-11-16 03:03:07 【问题描述】:

我正在尝试使用 AWS CodeBuild 安装 SonarQube。我使用 Nodejs: 10 作为运行时环境。当我将以下脚本作为构建规范运行时出现以下错误?据我了解,问题是 NodeJS 环境不包含内置的 Maven。如果是这种情况,我如何在 Node JS Env 中继续使用 Maven。提前致谢。

[Container] 2020/07/26 18:16:43 阶段上下文状态代码:COMMAND_EXECUTION_ERROR 消息:执行命令时出错:mvn test。原因:退出状态1

开始执行时出现问题-mvn test

buildspec.yml

version: 0.2
env:
  secrets-manager:
    LOGIN: SonarCloud:sonartoken
    HOST: SonarCloud:HOST
    Organization: SonarCloud:Organization
    Project: prod/sonar:Project
phases:
  install:
    runtime-versions:
      nodejs: 10  
  pre_build:
    commands:
      - npm install
      - apt-get update
      - apt-get install -y jq
      - wget http://www-eu.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
      - tar xzf apache-maven-3.5.4-bin.tar.gz
      - ln -s apache-maven-3.5.4 maven
      - wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
      - unzip ./sonar-scanner-cli-3.3.0.1492-linux.zip
      - export PATH=$PATH:/sonar-scanner-3.3.0.1492-linux/bin/
  build:
    commands:
      - mvn test     
      - mvn sonar:sonar -Dsonar.login=$LOGIN -Dsonar.host.url=$HOST -Dsonar.projectKey=$Project -Dsonar.organization=$Organization
      - sleep 5
      - curl https://sonarcloud.io/api/qualitygates/project_status?projectKey=$Project >result.json
      - cat result.json
      - if [ $(jq -r '.projectStatus.status' result.json) = ERROR ] ; then $CODEBUILD_BUILD_SUCCEEDING -eq 0 ;fi
      - echo Build started on `date`
      - echo Compiling the Node.js code
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - server.js
    - package.json
    - controller/*

【问题讨论】:

你做错了。您不能将 maven/java 与 nodejs 一起使用。这永远不会像这样工作。不要尝试解决maven问题,尝试解决如何将声纳与nodejs一起使用。 【参考方案1】:

Maven 在 java 中可用:openjdk8。

您需要将其添加到您的 yml。

示例格式:

phases:
  install:
    runtime-versions:
      java: openjdk8

  build:
    commands:
      - mvn test

【讨论】:

这意味着我需要在运行时版本部分指定 NodeJS 10 和 OpenJdk 8 吗? 是的!您必须同时添加它们。 @Amitkumar 我按照您的建议进行了尝试,但仍然无法实现。你能帮我解决这个问题吗?这是我得到的错误。 YAML_FILE_ERROR 消息:名为“openjdk8”的未知运行时版本的 java。此构建映像具有以下版本:corretto11、corretto8 Maven 在 openjdk8 中不可用。 Maven 是用 jdk 编写并在 jdk 上运行的,但 JDK 没有与 maven 捆绑在一起。【参考方案2】:

runtime-versions: 下添加java: corretto11java: openjdk8java: openjdk11,maven 将开始执行。

您可能需要使用特定于项目的 settings.xml 进行 maven 构建,您可以轻松地在 S3 存储桶中提供它,然后在 buildspec.yml 的构建命令下引用它

我在我的 aws 配置中使用 corretto 而不是 openjdk,因为 aws 为 corretto 提供 LTS。参考——https://aws.amazon.com/corretto/faqs/

【讨论】:

以上是关于执行命令时出错:mvn test。原因:退出状态 1 - AWS的主要内容,如果未能解决你的问题,请参考以下文章

Shell命令的退出状态及错误检查

使用 CMD 执行 Maven 项目 Java-mongoDB mvn 命令时出错

bat脚本中使用gradle或maven等外部命令后,脚本不继续执行,直接退出

bat脚本中使用gradle或maven等外部命令后,脚本不继续执行,直接退出

执行 mvn install 或 mvn test 但不是来自 Intellij 时集成测试失败

Gitlab CI/CD 运行器:找不到 mvn 命令