带有Gradle的Spring Boot多模块项目无法构建
2022-09-01 07:09:10
						我正在开发一个具有多个模块的Spring Boot应用程序,我们正在使用Gradle来构建它。不幸的是,我无法正确设置Gradle配置。
项目结构如下:
parent
  |
  + build.gradle
  |
  + settings.gradle
  |
  + core
  |   |
  |   + build.gradle
  | 
  + apis
  |   |
  |   + build.gradle
  |
  + services
  |   |
  |   + build.gradle
  | 
  + data
  |   |
  |   + build.gradle
当我尝试构建项目时,我收到编译错误,例如说,服务中使用的数据中的类未导入。我假设在所有模块之间都是如此。error: cannot find symbol
我的父级 build.gradle 看起来像这样:
buildscript {
    ext {
        springBootVersion = '2.0.0.BUILD-SNAPSHOT'
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
apply plugin: 'eclipse'
apply plugin: 'idea'
allprojects {
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/snapshot" }
        maven { url "https://repo.spring.io/milestone" }
    }
    dependencies {
        testCompile('org.springframework.boot:spring-boot-starter-test')
    }
}
dependencies {
    compile project(':data')
    compile project(':services')
    compile project(':apis')
    compile project(':core')
}
jar {
    baseName = 'my-jar'
    version = '0.0.1-SNAPSHOT'
}
settings.gradle:
rootProject.name = 'my-app'
include ':apis'
include ':core'
include ':data'
include ':services'
其中一个孩子(核心)在它的build.gradle中有这个:
dependencies {
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-starter-quartz')
    compile('org.springframework.boot:spring-boot-starter-tomcat')
    runtime('com.h2database:h2')
    compile project(':data')
    compile project(':services')
    compile project(':apis')
}
services build.gradle 看起来像这样:
dependencies {
    compile('org.springframework.boot:spring-boot-starter-quartz')
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    runtime('com.h2database:h2')
    compile project(':data')
}
其他的也只声明依赖项。
依赖关系结构如下所示:
core - apis, services, data
apis - services, data
services - data
data -
编译错误示例:
/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:3: error: package com.examples.data.dao does not exist import com.examples.data.dao.IssuedToken;
/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:4: error: package com.examples.data.repository does not exist import com.examples.data.repository.IssuedTokenRepository;
/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:12: error: cannot find symbol 
    private IssuedTokenRepository issuedTokenRepository;
    symbol:   class IssuedTokenRepository
   location: class IssuedTokenService
/my-app/services/src/main/java/com/example/my-app/business/IssuedTokenService.java:15: error: cannot find symbol
   public void saveToken(IssuedToken issuedToken) {
                                  ^
   symbol:   class IssuedToken
   location: class IssuedTokenService
 
					 
				 
				    		 
				    		 
				    		