Plugins Jar中不包括Gradle编译依赖项

Plugins Jar中不包括Gradle编译依赖项,plugins,jar,compilation,gradle,dependencies,Plugins,Jar,Compilation,Gradle,Dependencies,我有一个jar,build-plugins.jar和一个gradle插件,这个插件是在build.gradle中构建的: apply plugin 'java' dependencies { compile gradleApi() compile localGroovy() compile('eviware:maven-soapui-plugin:4.5.1') compile('org.antlr:stringtemplate:4.0.

我有一个jar,build-plugins.jar和一个gradle插件,这个插件是在build.gradle中构建的:

apply plugin 'java'
    dependencies {
    compile gradleApi()
       compile localGroovy()
       compile('eviware:maven-soapui-plugin:4.5.1')
       compile('org.antlr:stringtemplate:4.0.2')
       compile('commons-io:commons-io:2.4')
       compile('joda-time:joda-time:2.1')
    }
这将构建build-plugins.jar。使用插件的项目通过文件引用插件jar

apply plugin 'thepluginwahoo'
buildscript {
dependencies {
        classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:2.2.1'
        classpath files('/path/to/build-plugins.jar')
    }
}
问题是,当我运行第二个项目的任何任务时,我无法为类xyz创建类代理,根本原因是joda time、commons io、stringtemplate和maven soapui插件四个依赖项不存在。如果我将依赖项添加到插件消费项目中,那么它就可以正常工作:

apply plugin 'thepluginwahoo'
buildscript {
    dependencies {
        classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:2.2.1'
        classpath files('/path/to/build-plugins.jar')
        classpath 'eviware:maven-soapui-plugin:4.5.1'
        classpath 'org.antlr:stringtemplate:4.0.2'
        classpath 'joda-time:joda-time:2.1'
        classpath 'commons-io:commons-io:2.4'
    }
}


我的问题是,当jar包含在插件使用项目的构建脚本的类路径中时,插件项目中编译依赖项的类为什么不出现在插件使用项目中。

jar通常不包含它们的依赖项。相反,它们与描述工件依赖关系的某种元数据描述符pom.xml或ivy.xml一起发布到存储库。当您直接将jar文件称为依赖项时,Gradle无法知道它的可传递依赖项是什么。您有几种方法来处理此问题:

将您的插件jar发布到存储库,以及Gradle将为您提供的必要元数据,并将其作为 使用函数显式声明插件的可传递依赖项。 使用Gradle或插件之类的工具将依赖项捆绑到jar中。