Java 如何将一个Gradle配置的可传递依赖项添加到另一个Gradle配置?

Java 如何将一个Gradle配置的可传递依赖项添加到另一个Gradle配置?,java,gradle,aspectj,Java,Gradle,Aspectj,我正试图编写一个Gradle插件来修改依赖项的jar(通过在构建过程中使用AspectJ进行编织)。然而,由于我修改它们的方式,我需要在编译时使用未修改的版本,并在运行时用修改过的版本替换它们。因此,在我的插件中,我为用户创建了一个配置,以添加需要修改的依赖项。我希望插件能够将这些直接依赖项添加到仅编译类路径,将这些直接依赖项的修改版本添加为仅运行时类路径,并将未修改的可传递依赖项添加到编译和运行时类路径 我的问题是,如何在不添加直接依赖项的情况下,仅将该配置的可传递依赖项添加到运行时类路径 这

我正试图编写一个Gradle插件来修改依赖项的jar(通过在构建过程中使用AspectJ进行编织)。然而,由于我修改它们的方式,我需要在编译时使用未修改的版本,并在运行时用修改过的版本替换它们。因此,在我的插件中,我为用户创建了一个配置,以添加需要修改的依赖项。我希望插件能够将这些直接依赖项添加到仅编译类路径,将这些直接依赖项的修改版本添加为仅运行时类路径,并将未修改的可传递依赖项添加到编译和运行时类路径

我的问题是,如何在不添加直接依赖项的情况下,仅将该配置的可传递依赖项添加到运行时类路径

这似乎是不可能的,因为要获得可传递的依赖项,我需要在运行时配置之前解析我的配置,这样我就可以在解析运行时配置之前向运行时配置添加一些已解析的配置依赖项


作为补充说明,我一直依赖于类路径的顺序,这样我就可以在运行时包括修改过的和未修改过的版本,并且它使用修改过的版本。但是,我认为这可能不适用于动态解析的类。

请查看我的源代码,其中我获得了“目标”依赖项的可传递依赖项,而没有“目标”本身

有趣的片段

            configurations {
                monkeyPatchNonTransitive { transitive = false }
                monkeyPatchTransitive
            }

依赖项{
传递目标
MonkeyPatch非传递目标
编译(目标){
传递的=假
}
}
将depSet=[]设置为Set
ResolvedDependency topDependency=configurations.monkeyPatchTransitive.resolvedConfiguration.firstLevelModuleDependencies.iterator().next()
topDependency.children.each{ResolvedDependency子级->
child.allModuleArtifacts.each{ResolvedArtifact工件->
ModuleVersionIdentifier mvi=artifact.moduleVersion.id
def依赖项=[
组:mvi.group,
名称:mvi.name,
版本:mvi.version,
ext:artifact.extension
]
if(artifact.classifier){
依赖项['classifier']=artifact.classifier
}
德普塞特
                dependencies {
                    monkeyPatchTransitive target
                    monkeyPatchNonTransitive target
                    compileOnly(target) {
                        transitive = false
                    }
                }

                Set<Map>  depSet = [] as Set
                ResolvedDependency topDependency = configurations.monkeyPatchTransitive.resolvedConfiguration.firstLevelModuleDependencies.iterator().next()
                topDependency.children.each { ResolvedDependency child ->
                    child.allModuleArtifacts.each { ResolvedArtifact artifact ->
                        ModuleVersionIdentifier mvi = artifact.moduleVersion.id
                        def dependency = [
                                group  : mvi.group,
                                name   : mvi.name,
                                version: mvi.version,
                                ext    : artifact.extension
                        ]
                        if (artifact.classifier) {
                            dependency['classifier'] = artifact.classifier
                        }
                        depSet << dependency
                    }
                }