当前位置: 首页 > 知识库问答 >
问题:

gradle从5.1.1升级到6.4.1后不获取依赖项

卜高超
2023-03-14

这些依赖关系用compile()列在一个依赖项下,这个依赖项是我们的jar库,仍然是用gradle 5.1.1构建的

我们的库存储在一个S3桶中,我们使用shadowjar来生成结束Jar。

例如:

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"
    }
}

不幸的是,我不能创建一个真正的复制程序,因为这些库是我工作的公司的真正代码。

谢谢和问候,伊多

共有1个答案

阎冠玉
2023-03-14

S3bucket Maven存储库的metadatasources声明很可能是projectb传递依赖关系没有得到解析的根本原因。这里的文档相当模糊,但我怀疑artifact()只查找实际的jar文件,而不查找POM文件,因此不执行传递依赖解析。当使用开关--info--refresh-dependencies运行构建时,您应该能够看到这种行为。

谢天谢地,这很容易修复。添加mavenpom(),Gradle将首先尝试解析POM,这样,依赖性解析就会恢复正常。

同时,您可能希望阅读Gradle5 guide中的升级指南,去掉compile配置,转而使用实现。当使用--warning-mode all运行构建时,您应该能够看到类似于此的警告:

The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation or api configuration instead. Consult the upgrading guide for further information: https://docs.gradle.org/6.4.1/userguide/upgrading_version_5.html#dependencies_should_no_longer_be_declared_using_the_compile_and_runtime_configurations
 类似资料:
  • 我曾经使用这个简单的gradle任务将“compile”依赖项复制到一个特定的文件夹: 但是在我的Android项目升级到4.1之后,它就停止工作了,这个项目使用的是Android Studio的gradle插件3.0.1和gradle工具。由于https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

  • 我升级了我的AS,错误开始出现 我找了所有的地方,但我不能解决问题 这是我的构建。gradle(项目),脱机是未检查的,我做了无效和重启没有工作, 什么意思不能解决依赖?这是我在gradle(应用程序)中添加存储库时得到的结果

  • 我从2.1.4升级了springboot。发布到2.3.3。该版本更新了几个其他依赖项。POM如下所示: 4.0.0 com。gn gservices 1.0.0-SNAPSHOT jar 当我运行依赖:离线它失败与以下错误: 无法执行目标org.apache.maven.plugins: maven-依赖插件: 3.1.2:去离线(default-cli)在项目gservice:org.ecli

  • 我想在Gradle拥有所有可用的依赖构件之后,在将来手动下载依赖构件,因此我想获得Gradle用来下载这些构件的URL。 有没有一种方法可以获得Gradle下载的依赖项的URL?

  • 我已经创建了azure function应用程序,它运行良好,但当我将Azure Function版本从1.0更新到2.0时。我面临依赖注入错误。它在本地运行良好,但当我在Azure上发布它时,它出现了错误。 2018-11-03T07:22:12.238 [错误] 错误索引方法 'InviteFunctions.AcceptInvite' Microsoft.Azure.WebJobs.Host

  • 我被限制使用compileSdkVersion 22 buildToolsVersion“22.0.1”minSdkVersion 11 targetSdkVersion 15 我的项目在gradle版本:2.1.3和以下依赖项下运行良好: 比我用旧版本(2.1.3)降级我的Gradle版本。但在我的项目中仍然存在同样的依赖问题。我的项目的依赖关系树如下所示: 在这个问题上请帮助我