Проблема в том, что когда я собираю приложение локально, оно работает. Но во время конвейера возникают ошибки импорта Java.
Вывод конвейера:
Код: Выделить всё
$ export JAVA_HOME="/opt/java/openjdk22"
$ export PATH="$JAVA_HOME/bin:$PATH"
$ cd $GRADLE_PATH
$ chmod +x gradlew
$ VERSION=$(./gradlew -q printVersion)
$ WAR_FILE="app-${VERSION}.war"
$ ./gradlew clean build -x test
> Task :clean UP-TO-DATE
> Task :subproject1:clean UP-TO-DATE
> Task :subproject2:clean UP-TO-DATE
> Task :subproject1:compileJava
> Task :subproject1:processResources NO-SOURCE
> Task :subproject1:classes
> Task :subproject1:jar
> Task :subproject2:compileJava FAILED
/builds/.../subproject2/src/main/java/com/test/app/subproject2/SomeJavaFile.java:3: error: package com.test.app.subproject1.service does not exist
import com.test.app.subproject1.service.SomeJavaFile2;
Код: Выделить всё
--app
--src/main... (this contains the Main class)
--subproject1
--src/main...
--build.gradle
--subproject2
--src/main...
--build.gradle
--build.gradle
--settings.gradle
--.gitlab-ci.yml
Код: Выделить всё
`
rootProject.name = 'app'
include 'subproject1'
include 'subproject2'
`
Код: Выделить всё
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.6'
id 'war'
}
subprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
}
war {
enabled = false
}
allprojects {
group ...
version ...
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(22)
}
}
repositories {
mavenCentral()
}
dependencies {
spring, etc...
}
}
dependencies {
implementation project(":subproject1")
implementation project(":subproject2")
}
tasks.named('test') {
useJUnitPlatform()
}
bootWar {
archiveFileName = "app-${version}.war"
}
task printVersion {
doLast {
println version
}
}
Код: Выделить всё
bootJar {
enabled = false
}
jar {
enabled = true
}
Код: Выделить всё
dependencies {
implementation project(":subproject1")
}
bootJar {
enabled = false
}
jar {
enabled = true
}
Код: Выделить всё
stages:
- build
- test
- publish
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
GRADLE_PATH: "app"
before_script:
- export JAVA_HOME="/opt/java/openjdk22"
- export PATH="$JAVA_HOME/bin:$PATH"
- cd $GRADLE_PATH
- chmod +x gradlew
- VERSION=$(./gradlew -q printVersion)
- WAR_FILE="app-${VERSION}.war"
build:
stage: build
image: gradle:8.7-jdk-21-and-22-alpine
script:
- ./gradlew clean build -x test
- mv $GRADLE_PATH/build/libs/*.war $GRADLE_PATH/build/libs/$WAR_FILE
artifacts:
paths:
- $GRADLE_PATH/build/libs/
test:
...
publish:
...
Если мне нужно предоставить дополнительную информацию, дайте мне знать.
Заранее спасибо!Я пробовал разные образы Docker, добавляя кеширование Gradle в конвейер, ./gradlew --refresh-зависимости, устанавливая JAVA_HOME и PATH, очищая кеш Gradle перед сборкой.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -but-durin