在 Bamboo 中构建之前更改包名称
Posted
技术标签:
【中文标题】在 Bamboo 中构建之前更改包名称【英文标题】:Changing package names before building in Bamboo 【发布时间】:2011-02-28 19:05:04 【问题描述】:我最近发现BlackBerry treats all classes with the same fully-qualified name as identical——无论它们是否在完全不同的应用中——导致使用我们共享库的不同版本的应用在安装在同一部手机上时崩溃。
为了解决这个问题,我们计划更改包名称以包含版本号,然后进行构建。有人可以解释一下如何使用 Bamboo 在我们的构建过程中插入一个步骤:
更改某些包名称 是否将所有对旧包名的代码引用替换为对新包名的引用?【问题讨论】:
【参考方案1】:jarjar 是专门用于更改 jar 文件中 Java 类的完全限定名称的出色工具。它可以在 Ant 中轻松使用,也可以在 from a shell script 中使用。
我从未使用过 Bamboo - 我想,它也应该在那里工作。当然,在那个环境中可能会有一些特殊的限制(关于字节码操作),我不知道(?)
【讨论】:
Drat,看起来真的很酷,我不确定它是否适用于我们的具体情况。看起来 jarjar 替换了 jar 任务,但我们没有使用 jar 来构建——BlackBerry 有自己的 ant 任务 rapc,它处理编译。你知道是否可以使用 jarjar 来只执行包重命名步骤? @Amanda:我在谷歌上快速搜索了 rapc(我对此一无所知)。它看起来好像也可以与 jar 文件一起使用:codeforfun.wordpress.com/2008/09/09/…“最后一个参数应该指定一个包含已编译类的 jar 文件,或者是您打算编译的 .java 文件的列表。”如果可行,您可以先 jar 类,然后应用 jarjar,然后在 jar 上运行 rapc。【参考方案2】:我对 Bamboo 不熟悉,您没有提供有关构建系统的太多信息。如果你使用的是 maven,你可以使用shade plugin:
这个插件提供了将工件打包到 uber-jar 中的能力,包括它的依赖项和遮蔽 - 即重命名 - 一些依赖项的包。
second example here 展示了如何配置包重命名。然后必须由 rapc 处理生成的 jar 文件,如 Chris Lerchers 对 his answer 的注释。应该可以使用exec plugin 将其集成到 maven 构建中。
【讨论】:
以上是关于在 Bamboo 中构建之前更改包名称的主要内容,如果未能解决你的问题,请参考以下文章