在Gradle项目中,我有多个子项目。我需要将依赖关系从一个子项目的配置复制到另一个子项目的配置。我可以根据以下答案here改编为以下内容:
task copyDependencies(type: Copy) {
from project(":sub").configurations.compile
into "${buildDir}/libraries"
}
不幸的是,对于Gradle 5.1,这会生成以下弃用警告(为简洁起见被截断):
解决了:sub:compile配置,而没有以安全的方式访问项目。 ...该行为已被弃用,并计划在Gradle 6.0中删除。
现在对于Gradle 5.1和更高版本,最好的方法是什么?
答案 0 :(得分:1)
警告似乎是,当构建并行运行时,跨越项目边界可能会导致问题。
执行此操作的正确方法是让Gradle知道声明 ;WITH cte
AS (SELECT id,
name,
fruitid
FROM (SELECT *,
Cast('<X>' + Replace(F.fruit, ',', '</X><X>')
+ '</X>' AS XML) AS xmlfilter
FROM users F)F1
CROSS apply (SELECT fdata.d.value('.', 'varchar(50)') AS FruitId
FROM f1.xmlfilter.nodes('X') AS fdata(d)) O)
SELECT *
FROM cte C
INNER JOIN fruit F
ON F.id = Cast(C.fruitid AS INT)
任务的项目将需要项目copyDependencies
的依赖项。
您可以通过执行以下操作来实现:
:sub
这将使Gradle在项目与configurations {
dependenciesToCopy
}
dependencies {
dependenciesToCopy project(':sub')
}
task copyDependencies(type: Copy) {
from configurations.dependenciesToCopy
into "${buildDir}/libraries"
}
项目的依赖项的解析之间正确创建执行依赖项。
Relevant discussion在Gradle论坛上。