将一个 spring 个项目添加到另一个
Add one spring project to another
我创建了一个 Spring 项目(假设项目-A 和 gradle)作为 lib,在这个项目中我配置了一些 bean 以包含到另一个项目(假设项目-b 也gradle)。
在 maven 本地存储库(.m2 文件夹)的帮助下,我将一个项目添加到另一个项目,在本地这很好用,但是
Project-B 我想 docker使用 gradle 的 palantir 插件进行调整 gradle。
因此,在 docker 中,使用 gradle 的 springframework.boot 插件,我将 docker.
的所有依赖项包含在 jar 中
但问题是,在项目 A 中配置的 bean 未包含在项目 B 的 jar 文件中。
我也在项目-A 中添加 springframework.boot 插件,并在本地 .m2 仓库中发布这个 jar(这是从项目-A 增加 jar 文件),但是现在,没有添加依赖项到项目 B。
我该如何解决这个问题?
我的配置
项目-A(图片库)
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
}
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
}
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'maven-publish'
group 'org.picstories.lib'
version '2.0-SNAPSHOT'
sourceCompatibility = 11
repositories {
mavenLocal()
mavenCentral()
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
publishing {
repositories {
maven {
url '****'
credentials {
username '****'
password '****'
}
}
}
publications {
maven(MavenPublication) {
groupId 'org.picstories.lib'
artifactId 'picstories-library'
version '2.0-SNAPSHOT'
artifact sourceJar {
classifier "sources"
}
}
}
}
dependencies {
implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.2'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.3'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.2.2.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.2.5.RELEASE'
implementation group: 'com.google.guava', name: 'guava', version: '28.0-jre'
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.10.3'
compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
testCompileOnly 'org.projectlombok:lombok:1.18.12'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.5.RELEASE'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.2.4'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
}
jar {
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
manifest {
attributes 'Main-Class': 'org.picstories.Application',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
}
}
项目-B(解析器管理器服务)
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
}
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'com.palantir.docker' version "0.22.1"
id 'com.palantir.docker-run' version '0.22.1'
id 'com.palantir.docker-compose'version '0.22.1'
}
docker {
name "${project.name}:${project.version}"
files 'build/libs/parsers-manager-service-0.0.1-SNAPSHOT.jar'
dockerfile file('Dockerfile')
pull true
noCache true
}
dockerRun {
name "${project.name}"
image 'parsers-manager-service:unspecified'
ports '7003:7003'
clean true
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'java-library-distribution'
group 'org.picstrories.parsers.manager'
version '0.0.1-SNAPSHOT'
sourceCompatibility = 1.11
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
implementation group: 'org.picstories.lib', name: 'picstories-library', version: '2.0-SNAPSHOT'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '2.2.5.RELEASE'
implementation group: 'io.projectreactor.kafka', name: 'reactor-kafka', version: '1.2.2.RELEASE'
implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.3.4.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.2.2.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.2.5.RELEASE'
implementation group: 'com.google.guava', name: 'guava', version: '28.0-jre'
implementation group: 'net.bytebuddy', name: 'byte-buddy', version: '1.10.9'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
implementation group: 'org.yaml', name: 'snakeyaml', version: '1.25'
implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.2'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.3'
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.10.3'
testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
testImplementation group: 'junit', name: 'junit', version: '4.12'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.6.RELEASE'
testImplementation group: 'org.springframework', name: 'spring-test', version: '5.2.1.RELEASE'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.2.4'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
testImplementation group: 'io.projectreactor', name: 'reactor-test', version: '3.3.0.RELEASE'
}
distZip.shouldRunAfter(build)
jar {
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
manifest {
attributes 'Main-Class': 'org.picstories.parsers.manager.Application',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
}
}
test {
useJUnitPlatform()
}
lib 中的依赖项未导入
我解决了这个问题,只需在 lib 中添加 spring.factories 文件并通过删除 org.springframework.boot 插件
添加到配置 class 的路径
我创建了一个 Spring 项目(假设项目-A 和 gradle)作为 lib,在这个项目中我配置了一些 bean 以包含到另一个项目(假设项目-b 也gradle)。 在 maven 本地存储库(.m2 文件夹)的帮助下,我将一个项目添加到另一个项目,在本地这很好用,但是
Project-B 我想 docker使用 gradle 的 palantir 插件进行调整 gradle。
因此,在 docker 中,使用 gradle 的 springframework.boot 插件,我将 docker.
的所有依赖项包含在 jar 中但问题是,在项目 A 中配置的 bean 未包含在项目 B 的 jar 文件中。
我也在项目-A 中添加 springframework.boot 插件,并在本地 .m2 仓库中发布这个 jar(这是从项目-A 增加 jar 文件),但是现在,没有添加依赖项到项目 B。
我该如何解决这个问题?
我的配置
项目-A(图片库)
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
}
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
}
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'maven-publish'
group 'org.picstories.lib'
version '2.0-SNAPSHOT'
sourceCompatibility = 11
repositories {
mavenLocal()
mavenCentral()
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
publishing {
repositories {
maven {
url '****'
credentials {
username '****'
password '****'
}
}
}
publications {
maven(MavenPublication) {
groupId 'org.picstories.lib'
artifactId 'picstories-library'
version '2.0-SNAPSHOT'
artifact sourceJar {
classifier "sources"
}
}
}
}
dependencies {
implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.2'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.3'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.2.2.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.2.5.RELEASE'
implementation group: 'com.google.guava', name: 'guava', version: '28.0-jre'
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.10.3'
compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
testCompileOnly 'org.projectlombok:lombok:1.18.12'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.12'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.5.RELEASE'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.2.4'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
}
jar {
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
manifest {
attributes 'Main-Class': 'org.picstories.Application',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
}
}
项目-B(解析器管理器服务)
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
}
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'com.palantir.docker' version "0.22.1"
id 'com.palantir.docker-run' version '0.22.1'
id 'com.palantir.docker-compose'version '0.22.1'
}
docker {
name "${project.name}:${project.version}"
files 'build/libs/parsers-manager-service-0.0.1-SNAPSHOT.jar'
dockerfile file('Dockerfile')
pull true
noCache true
}
dockerRun {
name "${project.name}"
image 'parsers-manager-service:unspecified'
ports '7003:7003'
clean true
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'java-library-distribution'
group 'org.picstrories.parsers.manager'
version '0.0.1-SNAPSHOT'
sourceCompatibility = 1.11
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
implementation group: 'org.picstories.lib', name: 'picstories-library', version: '2.0-SNAPSHOT'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '2.2.5.RELEASE'
implementation group: 'io.projectreactor.kafka', name: 'reactor-kafka', version: '1.2.2.RELEASE'
implementation group: 'org.springframework.kafka', name: 'spring-kafka', version: '2.3.4.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.2.2.RELEASE'
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.2.5.RELEASE'
implementation group: 'com.google.guava', name: 'guava', version: '28.0-jre'
implementation group: 'net.bytebuddy', name: 'byte-buddy', version: '1.10.9'
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
implementation group: 'org.yaml', name: 'snakeyaml', version: '1.25'
implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.2'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.3'
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.10.3'
testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
testImplementation group: 'junit', name: 'junit', version: '4.12'
testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.2.6.RELEASE'
testImplementation group: 'org.springframework', name: 'spring-test', version: '5.2.1.RELEASE'
testImplementation group: 'org.mockito', name: 'mockito-core', version: '3.2.4'
testImplementation group: 'org.hamcrest', name: 'hamcrest', version: '2.2'
testImplementation group: 'io.projectreactor', name: 'reactor-test', version: '3.3.0.RELEASE'
}
distZip.shouldRunAfter(build)
jar {
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
manifest {
attributes 'Main-Class': 'org.picstories.parsers.manager.Application',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
}
}
test {
useJUnitPlatform()
}
lib 中的依赖项未导入
我解决了这个问题,只需在 lib 中添加 spring.factories 文件并通过删除 org.springframework.boot 插件
添加到配置 class 的路径