当前位置: 首页 > 面试题库 >

如何使用Ivy发布本机库?

莘绍元
2023-03-14
问题内容

对于Java库项目,要发布的工件非常简单,因为输出是单个jar文件。但是,我也有一个项目,其中包含以下内容:

  • MyLib.jar
  • armeabi / libStuff.so
  • armeabi-v7a / libStuff.so
  • mips / libStuff.so
  • x86 / libStuff.so

我无法将所有这些.so文件设置为工件,因为它们都具有相同的名称。推荐的方法是什么?将所有内容都放在一个zip中,让用户在构建之前使用gradle(或ant或其他工具)将其解压缩吗?我应该将Jar文件放在zip之外吗?是否有此类工件的约定?


问题答案:

使用常春藤管理许多“相同”工件的最佳方法是使用额外的属性,唯一的不同是架构。

因此,在模块中,您将声明:

<publications xmlns:e="http://ant.apache.org/ivy/extra">
    <artifact name="MyLib" type="jar" ext="jar" />
    <artifact name="libStuff" type="native" ext="so" e:arch="armeabi" />
    <artifact name="libStuff" type="native" ext="so" e:arch="armeabi-v7a" />
    <artifact name="libStuff" type="native" ext="so" e:arch="mips" />
    <artifact name="libStuff" type="native" ext="so" e:arch="x86" />
</publications>

缺点是您在常春藤周围的整个连锁店都必须考虑到该额外属性。例如,您应该能够配置您的存储库,以便它接受这样的自定义模式:

${repository.dir}/[organisation]/[module]/[arch]/[revision]/[artifact].[ext]

正如您提到的,另一种解决方案是使用zip文件夹。这可能是一个不错的时机,因为即将发布的Ivy
2.4通过包装支持压缩文件夹。

例如,您可以声明:

<publications xmlns:e="http://ant.apache.org/ivy/extra">
    <artifact name="MyLib" type="jar" ext="jar" />
    <artifact name="libStuff" type="natives" ext="zip" packaging="zip" />
</publications>

然后,常春藤将a下载libStuff-1.2.3.zip到其缓存中,并将其自动解压缩到缓存中的libStuff-1.2.3文件夹中,您可以在其中找到几个本机库。



 类似资料:
  • 我有一个常春藤项目,将其工件发布到Nexus Maven存储库。然后,我需要其他 Maven 项目能够将这些 jar 用作依赖项。我已经能够让艾薇创建并上传pom.xml以及罐子,这工作正常。问题是,当我使用 Ivy 发布新的快照版本时 - 即使我这样做,也没有 Maven 项目会检索新的快照依赖项: 我注意到Ivy没有向repos发布maven-metadata.xml文件——我想这就是问题所在

  • 我正在尝试使用expo客户端在iphone上发布我的应用程序。当我将链接从我的mackbook发送到iphone时。我收到一个错误,说“加载请求的应用程序时出现问题。看起来您可能正在使用LAN URL。确保您的设备与服务器位于同一网络上或尝试使用隧道。”我在同一个网络上。我检查了两次网络。这些是我遵循的步骤1)我通过在终端窗口中给出“npm start”命令来启动应用程序。2)我选择选项“s”,然

  • 我需要将react本机应用程序中的图像文件放入预先配置的s3上载URL。我看到了一个fetch示例,它通过path将图像作为二进制文件上传,但它是作为多部分表单上传的。由于s3上传url只能将其作为正文中的原始二进制文件,而不能作为多部分的内容类型,因此使用fetch或react native中的任何其他库将原始二进制图像作为正文使用的语法是什么? 下面的代码将其作为表单数据上传-这不是我想要做的

  • 我正在学习常春藤(http://ant.apache.org/ivy/ ),并将其整合为我们构建过程的一部分。一切都很顺利,但是我被常春藤出版的任务卡住了。具体来说,我希望使用以下模式发布到本地存储库(包括当前配置的名称): $ { ivy . local . default . root }/[组织]/[模块]/[修订]/[类型]s/[会议]/[工件]。[分机] 因此,我设置了自定义解析器: 并

  • 问题内容: 我使用JSoup使用以下代码发布值: 现在我也要提交文件。就像带有文件字段的表单一样。这可能吗 ?如果比怎么? 问题答案: 从Jsoup 1.8.2(2015年4月13日)开始,通过新方法才支持此功能。 在旧版本中,不支持发送请求。最好的选择是为此使用一个值得使用的HTTP客户端,例如Apache HttpComponents Client 。最终,您可以获得HTTP客户端响应,以便可

  • 问题内容: 当前,我正在使用node.js和redis来构建应用程序,使用redis的原因是由于发布/订阅功能。该应用程序只是在用户进入用户或不在房间时通知管理员。 由于我想听join和disjoin事件,我的问题是我是否应该使用两个redisclient来听这两个事件,例如 或者只是使用一个redisclient来监听和分离回调中的逻辑 我知道这两种方式都是可行的,但是我不知道人们在哪种情况下会