Я пытаюсь создать весенний загрузочный проект с gradle, используя подпроекты для разных слоев (web, business, dataAccess, common).
Я следовал инструкциям официального руководства по gradle Создание мультипроектовbuilds .
Оба подпроекта изначально созданы с Spring.io .
Проблема
Я пытаюсь использоватьмой User
класс подпроекта общий в моем другом подпроекте dataAccess . Импорт отлично работает в Intellij. Однако, когда я запускаю gradlew :dataAccess:compileJava
, задача не выполняется, поскольку User
не может быть найден:
Задача: dataAccess: compileJava FAILED ... \ dataAccess \ src \ main \ java \ ch \ wprogLK \MyProject \ backend \ dataAccess \ MyProjectDataApplication.java: 23: ошибка: не удается найти символ Пользователь u = новый пользователь ();^ символ: класс Расположение пользователя: класс MyProjectDataApplication)
Проект common компилируется до проекта dataAccess . Я предполагаю, что это проблема с простой настройкой, что проект dataAccess ничего не знает о проекте common во время компиляции (может быть, проблема с classpath?). Я рад за любую помощь. Благодарю.
Настройка проекта
- MyProject
- common
- src/ main / java / ch / wprogLK / myProject / backend / common / entity
- build.gradle
- settings.gradle
- dataAccess
- src / main / java / ch / wprogLK / myProject / backend / dataAccess
- build.gradle
- settings.gradle
- build.gradle
- settings.gradle
Код
MyProject / build.gradle
plugins {
id 'org.springframework.boot' version '2.1.8.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}
group = 'ch.wprogLK'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
allprojects {
apply plugin: 'java'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
MyProject / settings.gradle
rootProject.name = 'MyProject'
include 'common'
include 'dataAccess'
MyProject / common / build.gradle
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
id 'java'
}
group = 'ch.wprogLK'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
}
MyProject / common / settings.gradle
rootProject.name = 'common'
MyProject / common / src / main / java / ch / wprogLK / myProject / backend / common / entity / User.java
package ch.wprogLK.myProject.backend.common.entities;
public class User
{
private Long userId;
private String username;
}
MyProject / dataAccess / build.gradle
plugins {
id 'org.springframework.boot'
id 'io.spring.dependency-management'
id 'java'
}
group = 'ch.wprogLK'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
compile project(":common")
}
MyProject / dataAccess / settings.gradle
rootProject.name = 'dataAccess'
MyProject / dataAccess / src/main/java/ch/wprogLK/myProject/backend/dataAccess/MyProjectDataApplication.java
package ch.wprogLK.myProject.backend.dataAccess;
import ch.wprogLK.myProject.backend.common.entities.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyProjectDataApplication
{
public static void main(String[] args)
{
SpringApplication.run(MyProjectDataApplication.class, args);
}
public MyProjectDataApplication()
{
User u = new User(); //This line is the problem when running gradle :dataAccess:javaCompile
}
}