我想从 Github Actions 中的 pom.xml 获取项目版本

Posted

技术标签:

【中文标题】我想从 Github Actions 中的 pom.xml 获取项目版本【英文标题】:I want to get project version from pom.xml in Github Actions 【发布时间】:2021-11-15 07:23:37 【问题描述】:

我的 github 操作代码如下。我想将版本保存到环境中。

name: Windows x64 Build
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  build:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2

    - name: Cache local Maven repository
      uses: actions/cache@v2
      with:
        path: ~/.m2/repository
        key: $ runner.os -maven-$ hashFiles('**/pom.xml') 
        restore-keys: |
          $ runner.os -maven-
    - name: Set up JDK 14
      uses: actions/setup-java@v2
      with:
        java-version: 14
        distribution: 'adopt'
        architecture: x64
        javafx: true
        
    - name: Get version
      run: echo project_version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV

当我运行它时,我得到了这个错误,我找不到解决方案。

Run echo project_version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
  echo project_version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV
  shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '0'"
  env:
    JAVA_HOME: C:\hostedtoolcache\windows\Java_Adopt_jdk\14.0.2-12\x64
Error: Process completed with exit code 1.

如果你能帮助我,我会很高兴。

【问题讨论】:

【参考方案1】:

如果在 bash 上执行,您那里的代码应该可以正常工作。唯一的问题是,对于 Windows 运行程序,默认 shell 是 powershell,它使用的语法略有不同:

- name: Get version
  run: $project_version=mvn help:evaluate -Dexpression=project.version -q -DforceStdout; echo "project_version=$project_version" >> $Env:GITHUB_ENV

【讨论】:

这个语法也不起作用,但我发现了这个link【参考方案2】:

这个语法也不起作用,但我找到了这个link,我用这个改变了我的操作:

- name: Get version
  shell: bash -l 0
  run: echo project_version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) >> $GITHUB_ENV

还有 wadaaa。

【讨论】:

以上是关于我想从 Github Actions 中的 pom.xml 获取项目版本的主要内容,如果未能解决你的问题,请参考以下文章

在 Github Actions 中获取 Maven 项目版本

如何在 Github Actions 工作流中从 Github 包访问 Maven 依赖项?

我想从 Maven 的 pom.xml 执行 shell 命令

在 GitHub Actions 中使用 docker 文件

是否可以在 GitHub Actions 中的 Actions 之间保留 WORKDIR?

Github Actions 使用 maven 对另一个存储库的私有包注册表进行身份验证