在另一个目录中为“uses”运行 github 操作

syh*_*iel 9 github maven github-actions

我的 Maven 存储库位于./java目录中。我想在./java目录中运行 Maven 测试,但出现以下错误:

The goal you specified requires a project to execute but there is no POM in this directory (/github/workspace). Please verify you invoked Maven from the correct directory. -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

这是我的工作流程:

# This is a basic workflow to help you get started with Actions

name: CI
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  workflow_dispatch:


jobs:
  build:
    defaults:
      run:
        working-directory: java
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        
      - name: Run maven test
        uses: xlui/action-maven-cli@master
    
        with:
          lifecycle: 'clean package test'
Run Code Online (Sandbox Code Playgroud)

好像working-directory没啥用,请问如何解决呢?

Gui*_*urd 10

working-directory只能应用于run:步骤(例如,它不适用于操作)

该操作xlui/action-maven-cli@master当前不允许通知 apath执行 Maven 命令。

你可以

  • 使用Github Marketplace 上提供的另一个(类似)操作,该操作允许directory path在执行 Maven 命令之前通知,

  • 打开 PR 来更新操作,在执行 maven 命令之前xlui/action-maven-cli添加输入path(或env变量)来执行命令,cd

  • maven直接在步骤中的工作流程中安装(例如setup maven action),然后直接在另一个步骤上运行 maven 命令(不使用该操作),并在执行之前run: |使用,cd ./javash -c "mvn clean package test"

像这样的东西(对于第三个选项)

steps:
  - uses: actions/checkout@v2
    
  - name: Install maven
    run: |
      ...
  - name: Run maven command
    run: |
      cd ./java
      mvn clean package test
Run Code Online (Sandbox Code Playgroud)

  • 谢谢您的回答!我最终通过安装maven并添加`-f`参数指定maven测试目录解决了这个问题。我要提一下的是,官方对maven安装的操作仅在根目录下生效,因此`cd ./java & mvn install`会导致'command not find: mvn' (2认同)