我有2个项目,第一个项目依赖于javassist
,第二个项目依赖于第一个和spring-boot-starter-thymeleaf。
构建gradle就像下面的第一个项目
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation 'org.javassist:javassist:3.27.0-GA'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
第二个项目如下,:bar:hoge
是第一个项目。
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation project(':bar:hoge')
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
bootJar {
mainClassName = 'com.example.koji.Main'
}
如果我运行../gradlew dependencyInsight --dependency javassist --configuration runtimeClasspath
,结果如下所示。
No dependencies matching given input were found in configuration ':foo:bar:runtimeClasspath'
而且gradlew assemble
没有javassist。
但是,如果我id 'org.springframework.boot' version '2.3.3.RELEASE'
从第一个项目或implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
第二个项目中删除,则相同的命令将如下所示返回
org.javassist:javassist:3.27.0-GA
\--- project :bar:hoge
\--- runtimeClasspath
而且gradlew assemble
jar有javassist。
有任何想法吗?现在,我需要在第二个项目中显式添加javassist依赖关系来解决它。工作项目https://github.com/kojilin/example-multi
也许原因来自这里?
https://github.com/gradle/gradle/issues/1473#issuecomment-413333723
所以如果我申请
dependencyManagement {
applyMavenExclusions = false
}
它将库保留在runtimeClasspath中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句