尝试模块化Gradle SpringBoot项目,但在尝试构建时出现“错误:找不到符号”?

P_equals_NP_2021

我有一个正在工作的单模块Java项目,我试图将其分解为两个模块:一个库和一个应用程序模块。我从顶层build.gradle中提取了Java库,并将它们填充到库build.gradle中,并将SpringBoot / Docker / MySQL相关的依赖项保留在应用程序构建文件中。运行./gradlew构建会由于应用程序中的龙目岛内容上出现“找不到符号”错误而导致错误。

我添加了顶层settings.gradle(下面的代码),提取了所有Java库并放入library / build.gradle(下面的代码),并在application / build.gradle中添加了对库的引用(下面的代码) 。

settings.gradle:

rootProject.name = 'order-routing'
include 'library'
include 'application'

库/ build.gradle:

buildscript {
    repositories { mavenCentral() }
}

plugins {
    id "io.spring.dependency-management" version "1.0.5.RELEASE"
}

apply plugin: 'project-report'
apply plugin: 'java'

ext { springBootVersion = '2.1.6.RELEASE' }

jar {
    baseName = 'order-routing-library'
    version = '0.0.1-SNAPSHOT'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    testCompileOnly 'org.projectlombok:lombok'
    compileOnly 'com.google.code.gson:gson:2.8.5'
    runtimeOnly 'com.h2database:h2:1.4.197'
    compile 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile 'org.springframework.boot:spring-boot-starter-web'
    compile 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.0.14'
}

和application / build.gradle(注意,我添加了“ compile project(':library')”):

buildscript {
    ext { springBootVersion = '2.1.6.RELEASE' }
    repositories { mavenCentral() }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath('se.transmode.gradle:gradle-docker:1.2')
    }
}

plugins {
    id "io.spring.dependency-management" version "1.0.5.RELEASE"
    id 'org.springframework.boot' version '2.1.6.RELEASE'
    id 'java'
    id "org.flywaydb.flyway" version "5.2.4"
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'project-report'
apply plugin: "maven"
apply plugin: 'docker'
repositories {
    mavenCentral()
}

dependencies {
    compile 'mysql:mysql-connector-java'
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile project(':library')
}

sourceCompatibility = 8
targetCompatibility = 8

compileJava.options.compilerArgs.add '-parameters'
compileTestJava.options.compilerArgs.add '-parameters'

configurations {
    all*.exclude group: "org.hibernate", module: "hibernate-entitymanager"
    all*.exclude group: "org.apache.tomcat", module: "tomcat-jdbc"
}

flyway {
    url = 'jdbc:mysql://localhost/ordb'
    user = 'flyway'
    table = 'schema_version'
}

bootJar {
    baseName = 'order-routing-application'
    version = '0.0.1-SNAPSHOT'
    mainClassName = 'com.pokemonmerch.orderrouting.OrderRoutingApplication'
}

预期结果:运行'./gradlew build'并看到成功的构建。实际:在一堆lombok生成的方法上出现“错误:找不到符号”

最高

据我了解,您正在尝试在应用程序模块中使用lombok ,但您将其添加为compileOnly模块依赖因此,因为它compileOnly没有作为传递依赖项传递给应用程序模块。

application直接将lombok依赖项添加到模块中,或更改compileOnlycompile(我不建议这样做)。

PS不要忘了在IDE中打开注释处理。


实际上,我的建议是-在根文件夹(order-routing / build.gradle)中创建build.gradle并将通用依赖项移至以下subprojects部分(https://docs.gradle.org/current/userguide/multi_project_builds .html#sec:subproject_configuration

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试Google Analytics(分析)时出现“错误:找不到符号变量xml”

Maven尝试构建它时说“找不到符号”

在Mac上的Eclipse,尝试构建时出现“找不到指定的VM安装”错误

错误:尝试构建项目时出现[Dagger / MissingBinding]

尝试在Java中的数组上使用.stream()时出现“找不到符号错误”

尝试构建Android项目时出现链接器错误

构建时的iOS App模块化

尝试构建vim时找不到ncurses

gradle构建脚本应如何使该应用程序模块化?

出现错误:尝试初始化React Native应用时找不到模块'./src/init'

尝试初始化子模块时出现“致命:找不到子模块路径的URL”错误

尝试在框架目标中导入Sinch时获取“包含非模块化标头”

尝试对工作表上的形状进行分组时出现“找不到指定名称的项目”错误

尝试Alamofire时找不到迦太基符号

在CI管道上构建项目并尝试通过Yarn添加软件包时出现错误“错误,找不到软件包“ XXX”

如何为模块化C项目制作模块化Makefile?

模块化操作(%)提供错误的输出

尝试在IntelliJ上构建Gradle项目时出现错误代码B0

尝试安装单击模块化路由器,并需要/ usr / src / linux作为内核模块进行安装

模块化项目的财产置换

如何构建模块化应用

MEAN项目的模块化

尝试devtools :: install_github()时出现错误:“找不到构建stringi必需的构建工具”

尝试安装 npm 模块 scrypt 时出现“错误 MSB8020:找不到 v141 的构建工具(平台工具集 = 'v141')”

尝试部署到 Heroku 时出现“找不到模块‘异步’”错误

如何保持python项目模块化?

尝试创建新的 rails 5.1.4 项目时出现“找不到 gem”错误

当我尝试通过 python 脚本执行 shell 命令时,出现错误“找不到模块”

尝试执行模块化 java jar 文件时出错