首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot多模块Gradle项目类路径问题:未找到软件包,未找到符号

Spring Boot多模块Gradle项目类路径问题:未找到软件包,未找到符号
EN

Stack Overflow用户
提问于 2020-06-06 00:13:19
回答 1查看 343关注 0票数 0

我在另一个名为common的项目中有一个spring boot gradle项目etl,它依赖于公共核心类。

常见/build.gradle

代码语言:javascript
复制
plugins {
    id 'net.ltgt.apt' version '0.21'
    id 'org.springframework.boot'
    id 'io.spring.dependency-management'
    id "io.freefair.lombok" version "5.1.0"
    id 'java'
    id 'idea'
    id 'eclipse'
}

group = 'com.intelease'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    jcenter()
    mavenCentral()
    maven {
        name "lightbend-maven-release"
        url "https://repo.lightbend.com/lightbend/maven-releases"
    }
    maven {
        name "Sonatype Snapshots"
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
    ivy {
        name "lightbend-ivy-release"
        url "https://repo.lightbend.com/lightbend/ivy-releases"
        layout "ivy"
    }
}

dependencies {
    implementation 'com.typesafe.play:play-java_2.13:2.7.3'
    implementation 'com.typesafe.akka:akka-actor-typed_2.13:2.5.23'
    implementation "com.typesafe.play:play-guice_2.12:2.6.15"

    implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive'

    implementation 'org.neo4j.driver:neo4j-java-driver:1.7.5'
    implementation 'org.apache.poi:poi-ooxml:3.17'
    implementation 'com.google.maps:google-maps-services:0.13.0'
    implementation 'org.apache.commons:commons-text:1.8'
    implementation 'com.google.cloud:google-cloud-language:1.19.0'
    implementation 'com.google.cloud:google-cloud-vision:1.19.0'
    implementation 'technology.tabula:tabula:1.0.2'
    implementation 'com.amazonaws:aws-java-sdk:1.11.618'
    implementation 'edu.stanford.nlp:stanford-corenlp:3.8.0'
    implementation 'nz.ac.waikato.cms.weka:weka-stable:3.8.4'
    // https://mvnrepository.com/artifact/com.typesafe.play/play-java
    implementation 'org.joda:joda-money:0.11'
    implementation 'com.feth:play-easymail_2.12:0.9.0'
    implementation 'com.feth:play-authenticate_2.12:0.9.0'
    implementation 'org.apache.commons:commons-imaging:1.0-alpha1'
    implementation 'com.github.cloudyrock.mongock:mongock-core:3.3.2'
    implementation 'com.github.cloudyrock.mongock:mongock-spring:3.3.2'
    implementation 'net.logstash.logback:logstash-logback-encoder:5.3'
    implementation 'ch.qos.logback:logback-core:1.2.3'
    implementation 'ch.qos.logback:logback-classic:1.2.3'
    implementation 'com.google.firebase:firebase-admin:6.13.0'
    implementation 'org.mapstruct:mapstruct:1.3.1.Final'
    implementation 'org.jgrapht:jgrapht-core:1.4.0'
    implementation 'org.jgrapht:jgrapht-io:1.4.0'
    implementation 'commons-io:commons-io:2.6'
    implementation 'org.springframework.guice:spring-guice:1.1.4.RELEASE'
    implementation 'com.google.inject:guice:4.2.3'
    implementation 'commons-collections:commons-collections:3.2.2'
    implementation 'org.aspectj:aspectjrt:1.9.5'
    implementation 'org.ghost4j:ghost4j:1.0.1'
    annotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final'

    testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.3.1.Final' // if you are using mapstruct in test code

    testImplementation 'io.projectreactor:reactor-test:3.3.0.RELEASE'
    testImplementation 'org.springframework.boot:spring-boot-starter-test:2.2.0.RELEASE'
    testImplementation 'cloud.localstack:localstack-utils:0.1.22'
    testImplementation 'nl.jqno.equalsverifier:equalsverifier:3.3'
    testImplementation 'net.aichler:jupiter-interface:0.8.3'
    testImplementation 'org.mockito:mockito-junit-jupiter:3.0.0'
    testImplementation 'org.assertj:assertj-core:3.13.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.5.2'
}

etl/settings.gradle:

代码语言:javascript
复制
rootProject.name = 'etl'

includeFlat ('common')

etl/build.gradle:

代码语言:javascript
复制
plugins {
    id 'org.springframework.boot' version '2.2.7.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'eclipse'
    id 'idea'
    id 'java'
}

group = 'com.intelease'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
    jcenter()
    maven {
        name "lightbend-maven-release"
        url "https://repo.lightbend.com/lightbend/maven-releases"
    }
    ivy {
        name "lightbend-ivy-release"
        url "https://repo.lightbend.com/lightbend/ivy-releases"
        layout "ivy"
    }
}

ext {
    set('springCloudVersion', "Hoxton.SR4")
}

dependencies {
    implementation project(':common')
    implementation 'org.apache.kafka:kafka-streams'
    implementation 'io.debezium:debezium-core:1.1.1.Final'
    implementation 'org.springframework.cloud:spring-cloud-stream'
    implementation 'org.springframework.cloud:spring-cloud-stream-binder-kafka-streams'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }


    testImplementation 'org.springframework.cloud:spring-cloud-stream-test-support'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

在文件系统中,etl项目和common项目只是并排在同一级别。

问题是,每当我试图构建依赖于commonetl项目时,它都显示出一些关于我期望从common项目中引入和可用的类的问题。

我已经通过使用includeFlatcommon包含到了settings.gradle inside etl项目中,并且没有追踪到任何关于gradle多模块包含机制的问题。

这种扁平的多模块生态系统有什么问题?

构建脚本是etl文件夹中的./gradlew clean build

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 00:13:19

这个问题是因为spring boot插件在etlcommon项目中都存在。所以我发现在cammon/build.gradle中我必须添加这段代码:

代码语言:javascript
复制
...

bootJar {
    enabled = false
}

jar {
    enabled = true
}

...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62219743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档