【问题标题】:GitHub Actions Maven test failing after push?推送后 GitHub Actions Maven 测试失败?
【发布时间】:2021-12-31 09:31:02
【问题描述】:

我不太确定为什么会发生这种情况,因为它没有发生在我的另一个项目中,其设置几乎相同。我正在使用 Maven 开发一个 Java 项目,并希望在将代码推送到 GitHub 时运行我的测试套件。我可以做一个mvn compile test -Dtest=InterpreterTester,它会在本地正常工作。但是,如果我将代码推送到 GitHub,构建测试会失败,并出现一堆 cannot find symbol 错误和 package x does not exist. 同样,这不会在本地发生,我在以前的项目中使用过类似的设置(事实上,.yml 文件被逐字复制,.pom 文件仅在 ANTLR 版本中有所不同)。谁能看到可能出了什么问题?

maven.yml文件:

name: tests
on: push
jobs:
  run_tests:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repository
        uses: actions/checkout@v2
      - name: Set up JDK 14
        uses: actions/setup-java@v1
        with:
          java-version: 14
      - name: Cache Maven packages
        uses: actions/cache@v2
        with:
          path: ~/.m2
          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
          restore-keys: ${{ runner.os }}-m2
      - name: Run tests with Maven
        run: mvn compile test -Dtest=InterpreterTester

【问题讨论】:

  • 如果包刚刚发布,就得等到内部maven仓库刷新了。
  • @ThiloSchwarz 你能解释一下你的意思吗?
  • maven 本身在实际编译之前会显示哪些错误信息?
  • @TheProgrammer 为了节省流量,github 操作正在使用由 github 管理的“本地”maven 存储库。这个 repo 的刷新率很低。这就是为什么可以在本地解决依赖关系但不能在 github 操作上解决的原因。
  • @TheProgrammer 我检查了你的项目并在命令行上调用mvn clean compile时遇到了同样的错误。原因:编译插件对您生成的资源一无所知。我猜你的 IDE 有自己的源路径。

标签: java maven yaml github-actions antlr


【解决方案1】:

我自己修复了它 - 事实证明,对于 ANTLR 和 Maven,.g4 文件必须位于与项目其余部分具有相同“名称”的包中。例如,我的.g4 文件在src/main/antlr4/mygrammar.g4 中,而它本应在src/main/antlr4/com/myproject/mygrammar.g4 中,因为项目结构的其余部分是src/main/java/com/myproject/...

这反过来又允许 Maven 识别语法位置并使用 mvn clean compile 生成正确的文件。

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 2020-12-18
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多