如何使用常春藤发布本地库?
对于Java库项目,要发布的工件很简单,因为输出是单个jar文件。 但是,我还有一个项目,包含以下内容:
- MyLib.jar
- armeabi / libStuff.so
- armeabi-V7A / libStuff.so
- MIPS / libStuff.so
- 86 / libStuff.so
我无法将所有这些.so文件设置为工件,因为它们都具有相同的名称。 推荐的方式是什么? 把所有内容都放在一个zip中,让用户在构建之前使用gradle(或ant或其他)解压缩它? 我应该把Jar文件放在拉链旁边吗? 是否存在此类工件的约定?
使用Ivy来管理许多“相同”工件的唯一方法是使用额外的属性 。
所以在你的模块中你会声明:
缺点是你在Ivy周围的整个链都必须考虑到这个额外的属性。 例如,您应该能够配置您的存储库,以便它接受像这样的自定义模式:
${repository.dir}/[organisation]/[module]/[arch]/[revision]/[artifact].[ext]
正如您所提到的,另一种解决方案是使用zip文件夹。 这可能是一个很好的时机,因为即将发布的Ivy 2.4正在通过包装支持压缩文件夹。
例如,您可以声明:
然后Ivy会将libStuff-1.2.3.zip
下载到其缓存中,并自动将其解压缩到libStuff-1.2.3
文件夹中,在该文件夹中可以找到几个本机库。
- 如何在Gradle和IntelliJ中将生成的源文件夹添加到源路径?
- 使用spock junit测试和gradle构建系统在控制台上输出unit testing结果
- Gradle:如何排除一些测试?
- 使用gradle“run”任务运行main方法
- 在gradle更新后无法找到方法(无法编译项目)
- 全局gradle代理设置?
- 如何为Android Studio打包和链接OpenCV binares和OpenCV Java SDK?
- Gradle eclipse插件:找不到存储库容器上arguments 的方法jcenter()。 请参阅错误日志了解详细信
- 上下文初始化失败 – NoSuchMethodError:AntPathMatcher.setCaseSensitive()