【问题标题】:How to Copy dependencies to Build directory in Gradle如何将依赖项复制到 Gradle 中的 Build 目录
【发布时间】:2017-11-30 07:16:28
【问题描述】:

如何将依赖项复制到 Gradle 中的 Build 目录而不在 build.gradle 中添加任何任务,例如 mvn dependency:copy-dependencies..

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

    如果你真的不想要这个任务,你可以使用project 对象的copy 方法。

    configurations {
        compile
    }
    
    dependencies {
        compile 'someGroup:someArtifact:someVersion'
    }
    
    project.copy {
        from project.configurations.compile
        into project.buildDir
    }
    

    这样做的一个显着效果是每次调用都会触发解析,即即使您只想列出任务,也会触发解析和复制。

    【讨论】:

    • 感谢您的解决方案....我的要求是..需要在不接触 build.gradle 的情况下获得依赖项...我有大约 1500 多个 grAdle 项目....需要为每个项目复制依赖项项目作为预构建的一部分进入其构建目录.....有可能吗?
    • 我没试过,但我猜你可以重用复制指令并使用subprojects DSL 注入它,如果你有一个rootProject。但对于 1500 多个项目,我想无论如何这将是一项繁重的操作。
    • 由于依赖配置'compile'现在已被弃用,它已被 implementation 和 api 所取代,如果你使用它们中的任何一个,你将如何复制?
    • @Glund 您当然可以使用任何其他名称配置来代替compile,例如您可以更改为:from project.configurations.compileOnly
    【解决方案2】:

    您可以根据配置类型复制依赖项。

    这里有一些例子

    def runtimeDependencies = "${buildDir}/libs/runtime_dependencies/"
    def compileDependencies = "${buildDir}/libs/compile_dependencies/"
    
    
    task copyRuntimeDeps(type: Copy) {
    
        from configurations.runtime
        into "${runtimeDependencies}"
    
    
    }
    
    task compileDeps(type: Copy) {
        from configurations.compile
        into "${compileDependencies}"
    }
    

    您可以将此任务添加到 build.gradle 并以gradle compileDeps 执行任务

    所有可能的配置都可以通过configurations.each { println it.name }查看

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 1970-01-01
      • 2021-10-08
      • 2018-01-29
      • 1970-01-01
      • 2023-03-06
      • 2016-02-25
      • 2019-01-27
      • 1970-01-01
      相关资源
      最近更新 更多