【发布时间】:2020-05-20 05:33:34
【问题描述】:
我有几个使用 gradle 5.1.1 和 java 8 的服务。
由于我们要升级到Java 13,所以我们首先需要升级到gradle 6,这样做之后,有些依赖没有获取。
这些依赖项在依赖项下以compile() 列出,该依赖项是我们的 jar 库,仍然使用 gradle 5.1.1 构建
我们的库存储在 S3 存储桶中,我们使用 shadowjar 生成最终 jar。
所以,例如:
我有想要升级的项目 A。 项目 A 将项目 B 作为依赖项(编译) 项目 B 有 google guava 作为依赖项(也有编译)
现在,项目 A,在 gradle 5.1.1 下获取 guava 没有问题,提醒我升级到 gradle 6 后它缺少 guava。
我使用本地计算机安装的 gradle(不是包装器)。
这里是重要的 build.gradle 部分:
buildscript {
repositories {
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
ext.ver = [
'springboot': '2.2.0.RELEASE',
'slf4j' : '1.7.12'
]
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${ver.springboot}"
classpath 'io.spring.gradle:dependency-management-plugin:1.0.7.BUILD-SNAPSHOT'
classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'
classpath 'com.amazonaws:aws-java-sdk-core:1.11.5'
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'maven-publish'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
compileJava {
sourceCompatibility = JavaVersion.VERSION_1_8
}
configurations {
compile.exclude module: 'spring-boot-starter-logging'
testCompile.exclude module: 'spring-boot-starter-logging'
runtime.exclude module: 'spring-boot-starter-logging'
compile.exclude group: 'ch.qos.logback'
}
configurations.all {
resolutionStrategy.cacheDynamicVersionsFor 10, 'seconds'
resolutionStrategy.cacheChangingModulesFor 10, 'seconds'
}
dependencyManagement {
applyMavenExclusions = false
}
repositories {
mavenLocal()
maven {
url "s3://bucket"
credentials(AwsCredentials) {
accessKey = awsCredentials.AWSAccessKeyId
secretKey = awsCredentials.AWSSecretKey
}
metadataSources {
artifact()
}
}
mavenCentral()
}
dependencies {
compile("com.test:projectB:1.0.0")
...
}
import com.github.jengelman.gradle.plugins.shadow.transformers.PropertiesFileTransformer
shadowJar {
classifier = ''
baseName = 'project-A'
manifest {
attributes 'Main-Class': 'com.test.projectA.Starter'
}
mergeServiceFiles()
append 'META-INF/spring.handlers'
append 'META-INF/spring.schemas'
append 'META-INF/spring.tooling'
transform(PropertiesFileTransformer) {
paths = ['META-INF/spring.factories']
mergeStrategy = "append"
}
}
这可能是因为项目 B 不是用新的 gradle 构建的吗?
不幸的是,我无法创建真正的复制器,因为这些库是我所在公司的真实代码。
感谢和问候, 伊多
【问题讨论】:
标签: gradle