gpt4 book ai didi

gradle - 如何使用Gradle将依赖项导出到不同位置?

转载 作者:行者123 更新时间:2023-12-03 06:08:26 33 4
gpt4 key购买 nike

我想避免创建不同的配置,因为我希望有很多与我的依赖项相关的行为,而不仅仅是与之相关的行为。

因此,由于有了“ext”属性,我能够将自己的数据与依赖项相关联:

runtime 'org.apache.logging.log4j:log4j-api:2.5'
runtime 'org.apache.lucene:lucene-core:5.4.1'
runtime('hsqldb:hsqldb:1.8.0.10') { ext.exportTo = 'jdbc' }

现在,我想利用它将依赖项默认复制到“libs /”中,如果指定了exportTo,则将其复制到“libs / $ {exportTo} /”中。
task copyRuntimeLibs(type: Copy) {
into "build/dependencies"
from configurations.runtime
}

因此,我试图为那些特殊的依赖关系创建一个动态创建的配置,并为该工作创建一个动态创建的任务,我将其链接到主任务“copyRuntimeLibs”:
configurations.runtime.allDependencies.withType(ExternalModuleDependency).each { d ->
if (d.hasProperty("exportTo")) {
def key = "${d.group}:${d.name}:${d.version}"
def configname = "config-${key}"

def c = project.configurations.create(configname)
c.getDependencies().add(d)

def task = task "task-${key}"(type: Copy) {
into "build/dependencies/${d.ext.exportTo}"
from c
}
project.tasks.add(task)
copyRuntimeLibs.dependsOn task
}
}

这样就执行了动态任务,但是没有任何内容被复制。当我添加一个“eachFiles”进行调试时,它不会到达那里。

有什么线索吗?

最佳答案

task copyRuntimeLibs

copyRuntimeLibs << {
configurations.runtime.allDependencies.withType(ExternalModuleDependency).each { d ->
def exportFolder = 'build/dependencies'
def exportSub = ''
if (d.hasProperty("exportTo")) {
exportSub = d.ext.exportTo
}
def key = "${d.group}:${d.name}:${d.version}"
def c = project.configurations.create("config-${key}")
c.getDependencies().add(d)

copy {
from c
into "${exportFolder}/${exportSub}/"
}
}
}

关于gradle - 如何使用Gradle将依赖项导出到不同位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730747/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com