我想在gradle中构建一个包含多个依赖项的java项目,一些是来自maven中央存储库的jar依赖项,一些是其他java项目依赖项,但还有一个本机JNI依赖项。我已经设法用gradle作为一个单独的项目来构建本机依赖。
现在我想在我的java项目中导入已编译的.so库作为依赖项。我认为它会像这样工作:
dependencies {
compile project(':nameofnativedependency')
}
该项目也列在我的settings.gradle文件中。但是,当我编译项目时,我可能会收到错误:
无法确定任务':test
的依赖关系配置名称'默认'没找到。
所以必须错误配置。什么是正确的方法(我希望有一个)来编译本机项目并在调用项目中导入.so文件?
答案 0 :(得分:0)
Gradle原生插件使用新的rule based software model。直到build.gradle已经处理完成后才会实例化模型元素,并且一旦实例化它们就是不可变的。要访问这些元素,您需要将代码放在components
闭包中,并通过$
变量访问模型元素(请记住,以这种方式访问的元素将被实例化,因此是不可变的)。 / p>
要将java版本与本机版本集成,您可能希望使用java software model插件,而不是旧版Java插件。我一直在玩它,有一个buildscript,我开始感到有点自豪,包括从类文件生成头文件,构建库,复制到src / main / resources中的所有步骤要捆绑在jar中,然后在运行时提取和加载libs(虽然这部分还没有完成; Scijava's native library loader可能是要走的路。)