sách gpt4 ai đã đi

gradle - Gradle 配置依赖和 Gradle 配置传入依赖有什么区别?

In lại 作者:行者123 更新时间:2023-12-03 04:24:56 33 4
mua khóa gpt4 Nike

Gradle 配置有两个属性,称为 dependenciesincoming .根据我的理解,我们可以通过 Gradle 依赖 block 向配置添加依赖,如下所示:

phụ thuộc {
testCompile "junit:junit:4.12"
}

我希望在执行上述代码块后,testCompile.dependencies 将返回一个集合,其中至少包含 1 个表示 JUnit 依赖项的对象。

不过,我不确定 testCompile.incoming 将代表什么。

配置的dependenciesincoming 属性之间有什么关系?使用传入属性的示例是什么?

1 Câu trả lời

我想我通过一些实验弄明白了。我首先使用 Gradle 创建了一个虚拟项目。我有以下 Gradle 脚本来尝试 testCompile 配置属性的不同属性。

group 'com.example'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

kho lưu trữ {
mavenCentral()
}

task("dummyFileGenerator") {
outputs.file '/tmp'
}

// configurations.testCompile.transitive false

phụ thuộc {
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile files('/tmp')

}

println "Printing dependencies"
configurations.testCompile.dependencies.all {
println(it)
}
println "======="

println "Printing all dependencies"
configurations.testCompile.allDependencies.all {
println it
}
println '======='

println "printing incoming dependencies"
configurations.testCompile.incoming.dependencies.all {
println(it)
}
println "======="

println "printing files of incoming dependencies"
configurations.testCompile.incoming.files.forEach {
println it
}
println "======="

println "printing artifacts of incoming dependencies"
configurations.testCompile.incoming.artifacts.forEach {
println it
}
println "======="

println "printing files of incoming dependencies (again)"
configurations.testCompile.incoming.files.forEach {
println it
}
println "======="

task("blecgh") {
doLast {
println "Hello!"
}
}

此脚本的示例输出是:

Printing dependencies
DefaultExternalModuleDependency{group='junit', name='junit', version='4.12', configuration='default'}
org.gradle.api.internal.artifacts.dependencies.DefaultSelfResolvingDependency_Decorated@433edba9
=======
Printing all dependencies
DefaultExternalModuleDependency{group='junit', name='junit', version='4.12', configuration='default'}
org.gradle.api.internal.artifacts.dependencies.DefaultSelfResolvingDependency_Decorated@433edba9
=======
printing incoming dependencies
DefaultExternalModuleDependency{group='junit', name='junit', version='4.12', configuration='default'}
org.gradle.api.internal.artifacts.dependencies.DefaultSelfResolvingDependency_Decorated@433edba9
=======
printing files of incoming dependencies
/tmp
/usr/local/google/home/afwang/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar
/usr/local/google/home/afwang/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar
=======
printing artifacts of incoming dependencies
tạm thời
junit.jar (junit:junit:4.12)
hamcrest-core.jar (org.hamcrest:hamcrest-core:1.3)
=======
printing files of incoming dependencies (again)
/tmp
/usr/local/google/home/afwang/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar
/usr/local/google/home/afwang/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar
=======
:blecgh
Hello!

BUILD SUCCESSFUL

Total time: 0.621 secs

需要注意的有趣位是 incoming.filesincoming.artifacts 包含 Hamcrest 依赖项的表示。这表明配置的 incoming 属性除了配置的直接依赖项的工件之外还包括配置的传递依赖项的工件。这似乎与配置的 transitive 属性有关。如果 transitive 属性设置为 false,则 incoming 属性将不包含配置的传递依赖项的工件;仅包含直接依赖项的工件。

请注意,配置的 allDependencies 属性不包括传递依赖项。相反,allDependencies 属性包括从 super 配置继承的依赖项。

这是一张图表,可以帮助解释我认为这些配置属性代表的含义:

configParent -- depParent
|
|
configChild -- depA
\- depB -- depB1 -- depB2

configParentconfigChild 是配置。 configParent 直接依赖于 depParent. configParent ĐúngconfigChild 的 super 配置。 configChild 具有直接依赖项 depAdepB. depB Phụ thuộc vào depB1,depB1 Phụ thuộc vào depB2.

configChild.dependencies 将仅包含 depAdepB. configChild.allDependencies 将仅包含 depParent,depAdepB. configChild.incoming.artifacts 将包含依赖项 depParent,depA,depB,depB1depB2。同样,configChild.incoming.files 将包含依赖文件 depParent,depA,depB, depB1depB2.

我总结说配置的传入属性是其所有依赖项的解析,包括从 super 配置继承的依赖项。

关于gradle - Gradle 配置依赖和 Gradle 配置传入依赖有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47318323/

33 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com