我开发了一个自定义Gradle插件并组装为// Traits class
template <typename T, typename = void>
struct VectorTraits_impl
{
};
template <typename T>
struct VectorTraits_impl<T,
std::enable_if_t<std::is_integral<decltype(T::dimension)>::value>>
{
typedef T VectorType;
typedef typename T::ValueType ValueType;
static const std::uint16_t dimension = T::dimension;
};
// Traits class
template <typename T>
using VectorTraits = VectorTraits_impl<T>;
。这个插件有一个依赖:
插件/的build.gradle
jar
我已将我的插件包含在另一个消费者项目中(dependencies {
compile 'com.jcraft:jsch:0.1.53'
}
中为jar
):
消费者/的build.gradle
libs
一切正常,但是当执行使用依赖项apply plugin: 'gg-release-plugin'
buildscript {
repositories {
flatDir {
dirs 'libs'
}
mavenCentral()
}
dependencies {
classpath 'com.myplugin.plugin:myplugin:1.0'
}
}
的代码时,我收到错误:
java.lang.NoClassDefFoundError:com / jcraft / jsch / JSch
我做错了什么?如何在com.jcraft:jsch:0.1.53
文件中包含依赖项?
答案 0 :(得分:1)
似乎,你已经创建了一个带有编译时间依赖性的插件jar库,它不包含在你的最终jar中的任何地方。
您可以尝试使用Gradle FatJar plugin或其他内容将您的插件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,因此,它似乎不是是可能的。