【发布时间】: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?
【问题讨论】: