java - 如何在另一个 Spring Boot 项目中添加本地 Spring Boot 项目作为依赖项
问题描述
我有 Spring Boot 项目 Core,它具有一些基本的核心功能。我想在其中添加核心依赖项的另一个项目 UserManager。
下面是两个项目的 build.gradle 和 settings.gradle
核心的settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
}
}
rootProject.name = 'core'
Core的build.gradle
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'org.jetbrains.kotlin.jvm' version '1.3.21'
id 'org.jetbrains.kotlin.plugin.spring' version '1.3.21'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.simbalarry'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
compileKotlin {
kotlinOptions {
freeCompilerArgs = ['-Xjsr305=strict']
jvmTarget = '1.8'
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ['-Xjsr305=strict']
jvmTarget = '1.8'
}
}
用户管理的settings.gradle
pluginManagement {
repositories {
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
gradlePluginPortal()
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == 'org.springframework.boot') {
useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}")
}
}
}
}
rootProject.name = 'usermanager'
用户管理的 build.gradle
plugins {
id 'org.jetbrains.kotlin.plugin.jpa' version '1.2.71'
id 'org.springframework.boot' version '2.2.0.M1'
id 'org.jetbrains.kotlin.jvm' version '1.2.71'
id 'org.jetbrains.kotlin.plugin.spring' version '1.2.71'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.simbalarry'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
test {
useJUnitPlatform()
}
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
implementation 'com.microsoft.sqlserver:mssql-jdbc'
implementation 'org.modelmapper:modelmapper:2.3.0'
compile project(':core')
//compile 'com.simbalarry:core:0.0.1-SNAPSHOT'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.2'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.3.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.2'
}
compileKotlin {
kotlinOptions {
freeCompilerArgs = ['-Xjsr305=strict']
jvmTarget = '1.8'
}
}
compileTestKotlin {
kotlinOptions {
freeCompilerArgs = ['-Xjsr305=strict']
jvmTarget = '1.8'
}
}
那么我应该在 UserManager 项目中添加什么来添加 Core 作为依赖项。
解决方案
首先添加jar
in依赖
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
implementation 'com.microsoft.sqlserver:mssql-jdbc'
implementation 'org.modelmapper:modelmapper:2.3.0'
compile project(':core')
compile 'com.simbalarry:core:0.0.1-SNAPSHOT'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.2'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.3.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.2'
}
然后添加jar所在的repository
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
//company repository or custom repository
}
由于Core as dependency
和 UserManager
两者都是spring boot项目,UserManager
加上@ComponentScan
需要在两个项目中扫描的包
@ComponentScan({"com.user.management", "com.core.dependency"})
如果项目不在存储库中将该 jar 作为外部 jar 添加到项目
在 Eclipse --> 右键单击项目 --> 构建路径 --> 配置构建路径 --> 添加外部 jar
推荐阅读
- c# - 在我的 Web api 端点中解析 HTTP POST 请求正文时出错
- python - passing optional arguments to a function in pandas
- scala - 初始化后更改 Future 的 ExecutionContext
- c++ - 调用 Mitsuba 附加组件的构造函数时,未定义的符号运行时错误是什么意思?
- jekyll - 将变量传递到 for 循环中 - 不起作用
- jquery - Jquery 仅显示所选选项之一 + 必需
- python - 如何在 pandas 中使用 API Endpoint 下载 .csv 文件
- android - 如何只通知一次不同片段中的 liveData 更改?
- r - 如何使用 R 中的循环创建具有某些条件的虚拟变量?
- c++ - 从数组指针中获取奇怪的数字