我正在使用 gradle 为我们的 java 项目构建 JNI 库,它工作正常,但是我似乎无法弄清楚如何阻止 gradle 构建文件的共享版本和静态版本。我想禁用静态库的构建以加快构建过程。添加“共享”标签似乎并不能解决问题。
来自 gradle 构建文件:
libraries {
bulletjme {
shared
}
}
gradle 手册指出“例如,当您定义一个名为 helloworld 的库并在 Linux 上构建时,Gradle 默认情况下会生成 libhelloworld.so 和 libhelloworld.a 二进制文件。”但是,它没有说明如何禁用任一二进制文件的构建。
感谢您的回答!
最佳答案
在 Gradle 2.11 中,可以通过将 buildable 属性设置为 false 来设置此功能。虽然文档说它是只读的,但它确实有效。
model {
components {
library(NativeLibrarySpec) {
binaries.withType(StaticLibraryBinarySpec) {
buildable = false
}
}
}
}
检查组件输出时,Gradle 现在会提示用户禁用了库:
$ gradle components
...
Binaries
Shared library 'library:sharedLibrary'
build using task: :librarySharedLibrary
build type: build type 'debug'
flavor: flavor 'default'
target platform: platform 'linux_x86-64'
tool chain: Tool chain 'gcc' (GNU GCC)
shared library file: build/libs/library/shared/liblibrary.so
Static library 'library:staticLibrary' (not buildable)
build using task: :libraryStaticLibrary
build type: build type 'debug'
flavor: flavor 'default'
target platform: platform 'linux_x86-64'
tool chain: Tool chain 'gcc' (GNU GCC)
static library file: build/libs/library/static/liblibrary.a
Disabled by user
这也可以同时对所有库进行全局处理:
model {
components {
libraryA(NativeLibrarySpec)
libraryB(NativeLibrarySpec)
all {
binaries.withType(StaticLibraryBinarySpec) {
buildable = false
}
}
}
}
关于java - 在 Gradle 中禁用静态库构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929052/