【问题标题】:Gitlab-CI and gradle: How to run gradlew build for project in directory subfolderGitlab-CI 和 gradle:如何在目录子文件夹中为项目运行 gradlew build
【发布时间】:2022-10-17 22:49:07
【问题描述】:

我有一个存储库,我想在其中将源代码和文档分开一点。所以我的目录结构是这样的:

/
- .gitlab-ci.yml
- readme.md
+ doc/
  - doc_files.txt
+ src/
  + server/
    - gradlew
    - source_code.java

所以从 repo 的根目录,我需要执行./src/server/gradlew build 来构建项目。

现在我需要通过 Gitlab-CI 触发 gradle build,也就是说,我会准确地执行上述命令。无论如何,gradlew 似乎不喜欢从任何其他目录执行并且失败并显示以下内容:

> ./src/server/gradlew build

FAILURE: Build failed with an exception.

* What went wrong:
Directory '/home/user/git/project' does not contain a Gradle build.

A Gradle build should contain a 'settings.gradle' or 'settings.gradle.kts' file in its root directory. It may also contain a 'build.gradle' or 'build.gradle.kts' file.

//...

BUILD FAILED in 668ms

所以我尝试使用-p 设置目录和/或使用-b 直接指向src/server/ 中的settings.gradle - 无论如何,我收到以下错误:

> ./src/server/gradlew -b settings.gradle -p src/server/ build

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'server'.
> Could not open proj generic class cache for build file '/home/user/git/project/src/server/settings.gradle' (/home/user/.gradle/caches/7.5.1/scripts/qpzgz2vuqu1er7i9j90pmbyq).
   > BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 63

// ...

BUILD FAILED in 667ms

而且,很明显,Gitlab-CI 失败了。所以我尝试在.gitlab-ci.yml中执行gradlew之前告诉Gitlab-CI到cd进入目录/src/server/

cd src/server && ./gradlew build

无论如何,这也不起作用并且像这样失败(来自跑步者在 Gitlab-CI 中的工作的输出):

// ...
$ cd src/server && ./gradlew build
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Caused by: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1

在给定现有目录结构的情况下,如何告诉 Gitlab-CI 从存储库的根目录使用 gradlew build?

【问题讨论】:

    标签: gradle gitlab gitlab-ci


    【解决方案1】:

    你能导出GRADLE_USER_HOME inbefore_script.gitlab-ci.yml 文件。

    before_script:
      - export GRADLE_USER_HOME=`pwd`/.gradle
    

    您可以在https://gist.github.com/daicham/5ac8461b8b49385244aa0977638c3420#file-gitlab-ci-yml 获取参考配置

    【讨论】:

      【解决方案2】:

      您应该尝试在根目录中设置 setting.gradle 文件,在 src/server 目录中设置 build.gradle。使用 -p 应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-31
        • 1970-01-01
        • 2019-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        相关资源
        最近更新 更多