Сборка многопроектного приложения с весенней загрузкой Gradle работает нормально локально, но во время конвейера Gitlab JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Сборка многопроектного приложения с весенней загрузкой Gradle работает нормально локально, но во время конвейера Gitlab

Сообщение Anonymous »

У меня есть многопроектное приложение с весенней загрузкой. Я пришел из Maven и пытаюсь изучить Gradle.
Проблема в том, что когда я собираю приложение локально, оно работает. Но во время конвейера возникают ошибки импорта 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
app/settings.gradle:

Код: Выделить всё

`
rootProject.name = 'app'

include 'subproject1'
include 'subproject2'
`
app/build.gradle:

Код: Выделить всё

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
}
}

app/subproject1/build.gradle:

Код: Выделить всё

bootJar {
enabled = false
}

jar {
enabled = true
}
app/subproject2/build.gradle:

Код: Выделить всё

dependencies {
implementation project(":subproject1")
}

bootJar {
enabled = false
}

jar {
enabled = true
}
.gitlab-ci.yml:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»