我已经开发了一个自定义的Gradle插件,并组装为jar
。该插件具有一个依赖项:
plugin / build.gradle
dependencies {
compile 'com.jcraft:jsch:0.1.53'
}
我已经包括了我的另一个消费项目(如插件jar
中libs
):
消费者/ build.gradle
apply plugin: 'gg-release-plugin'
buildscript {
repositories {
flatDir {
dirs 'libs'
}
mavenCentral()
}
dependencies {
classpath 'com.myplugin.plugin:myplugin:1.0'
}
}
一切正常,但是com.jcraft:jsch:0.1.53
执行使用依赖项类的代码时,出现错误:
java.lang.NoClassDefFoundError:com / jcraft / jsch / JSch
我究竟做错了什么?如何在jar
文件中包含依赖项?
看来,您已经创建了一个具有编译时要求的插件jar库,该库未包含在最终jar中的任何位置。
您可以尝试使用Gradle FatJar插件或其他方式将您的插件jar创建为胖子。在这种情况下,您将只有一个jar,其中包含所有依赖类。但是,如果有人使用相同的库,则可能会导致问题。
或者,您可以尝试与插件jar一起提供JSch库,并建立消费者构建脚本依赖项,例如:
buildscript {
repositories {
flatDir {
dirs 'libs'
}
mavenCentral()
}
dependencies {
classpath 'com.myplugin.plugin:myplugin:1.0'
classpath 'com.jcraft:jsch:0.1.53'
}
}
据我所知,如果您使用Maven存储库发布插件,则可以提供pom.xml来描述所有插件的依赖项,但是正如我所看到的,您正在为其使用flatDir,因此,似乎不可能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句