在 Github Actions 中获取 Maven 项目版本
Posted
技术标签:
【中文标题】在 Github Actions 中获取 Maven 项目版本【英文标题】:Getting Maven Project version within Github Actions 【发布时间】:2020-12-18 05:22:28 【问题描述】:我正在尝试获取我的 maven 项目的版本作为部署过程的一部分,但我似乎在命令的输出中遇到了错误。有什么想法吗?
我的 pom.xml 插件中有 Maven 帮助。
这是我正在运行的步骤:
- name: Get version
run: |
VERSION=$( mvn help:evaluate -Dexpression=project.version -q -DforceStdout )
echo "::set-output name=version::$VERSION"
id: get_version
这是输出(注意:我在这里删除了 -q 以便我可以看到输出)。请注意,默认的项目是我正在寻找的。我正在尝试将 v0.1 作为我的输出!
[INFO] No artifact parameter specified, using 'com.xyz:abc-123:war:v0.1' as project.
[INFO]
null object or invalid expression
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.569 s
[INFO] Finished at: 2020-08-29T13:52:22Z
[INFO] ------------------------------------------------------------------------
我正在使用帮助 3.2.0
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>3.2.0</version>
</plugin>
【问题讨论】:
您配置使用哪个版本的 maven-help-plugin?除此之外,为什么要使用v1.0
而不是1.0
这么奇怪的版本?
也许尝试使用类似这样的东西而不是插件的***.com/a/26514030
这能回答你的问题吗? How to get Maven project version to the bash command line
Ed -- 您的第一个链接最终与我最初拥有的命令一样有效。最终归结为脚本中的错误排序。
【参考方案1】:
原来问题不在于命令,而在于我的命令。我最初并没有在第一条评论中粘贴这个,但我有一个步骤需要手动安装 jars(是的,这些应该在某个时候发布到某种内部包管理器......)。
一旦我将手动库步骤放在版本步骤之前,一切都会顺利执行。
- name: Install manual libraries
run: |
mvn install:install-file -Dfile=lib/xyz.jar -DgroupId=com.xyz-DartifactId=xyz -Dversion=8.3.0 -Dpackaging=jar
- name: Get version
run: |
VERSION=$( mvn help:evaluate -Dexpression=project.version -q -DforceStdout )
echo "::set-output name=version::$VERSION"
id: get_version
【讨论】:
【参考方案2】:还有这种方法使用mvn exec
目标和set-output
variable definition:
- name: Extract Maven project version
run: echo ::set-output name=version::$(mvn -q -Dexec.executable=echo -Dexec.args='$project.version' --non-recursive exec:exec)
id: project
- name: Show extracted Maven project version
run: echo $ steps.project.outputs.version
【讨论】:
【参考方案3】:如果您只需要在工作的后续步骤中使用该版本,那么您可以在GITHUB_ENV
上将其设置为environment variable,并通过$ env.var_name
访问它。例如:
- name: Set Release version env variable
run: |
echo "RELEASE_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: $ secrets.GITHUB_TOKEN
with:
tag_name: $ env.RELEASE_VERSION
release_name: Release $ env.RELEASE_VERSION
draft: false
prerelease: false
【讨论】:
以上是关于在 Github Actions 中获取 Maven 项目版本的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Github Actions 中获取 SECRETS 的值?
GitHub Actions API:获取查看工作流运行历史记录
我想从 Github Actions 中的 pom.xml 获取项目版本