wpr*_*gLK 4 java spring gradle spring-boot
我尝试使用不同层(web、business、dataAccess、common)的子项目创建一个带有 gradle 的 spring boot 项目。
我按照官方 gradle 指南创建多项目构建的说明进行操作。
两个子项目最初都是用Spring.io创建的。
问题
我尝试使用我User的其他子项目dataAccess 中常见的子项目类。导入在 Intellij 中工作正常。但是,当我运行任务失败,因为找不到:gradlew :dataAccess:compileJavaUser
任务 :dataAccess:compileJava FAILED ...\dataAccess\src\main\java\ch\wprogLK\MyProject\backend\dataAccess\MyProjectDataApplication.java:23: 错误:找不到符号 User u = new User(); ^ 符号:class 用户位置:class MyProjectDataApplication)
在常见的项目获取编译之前数据访问项目。我猜这是一个 gradle 配置问题,dataAccess项目在编译时对公共项目一无所知(可能是类路径问题?)。我很高兴得到任何帮助。谢谢。
项目设置
代码
我的项目/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'
}
Run Code Online (Sandbox Code Playgroud)
我的项目/settings.gradle
rootProject.name = 'MyProject'
include 'common'
include 'dataAccess'
Run Code Online (Sandbox Code Playgroud)
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 {
}
Run Code Online (Sandbox Code Playgroud)
MyProject/ common / settings.gradle
rootProject.name = 'common'
Run Code Online (Sandbox Code Playgroud)
MyProject/ common / src / main / java / ch / wprogLK / myProject / backend / common / entities / User.java
package ch.wprogLK.myProject.backend.common.entities;
public class User
{
private Long userId;
private String username;
}
Run Code Online (Sandbox Code Playgroud)
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")
}
Run Code Online (Sandbox Code Playgroud)
MyProject的/数据访问/settings.gradle
rootProject.name = 'dataAccess'
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*ohx 10
缺少设置两个配置以指示这common是一个库。因此compile,run从项目的根目录添加以下配置和。
common build.gradle
bootJar {
enabled = false
}
jar {
enabled = true
}
Run Code Online (Sandbox Code Playgroud)