在构建Bamboo之前更改软件包名称

问题描述:

我最近发现BlackBerry treats all classes with the same fully-qualified name as identical - 无论它们是否完全不同的应用程序或不是 - 导致使用不同版本的共享库的应用程序在安装在同一个手机上时中断。在构建Bamboo之前更改软件包名称

为了解决这个问题,我们正在计划更改软件包名称以包含版本号,然后构建。有人能解释如何使用竹,我可以插入我们的构建过程中的步骤是:

  • 改变某些包名称
  • 替换为新的包名引用旧包名称的所有代码引用?

一个特别为更改jar文件中Java类的完全限定名而完成的工具是jarjar。它可以在Ant中轻松使用,或者可以使用from a shell script

我从来没有用过竹 - 我想,它也应该在那里工作。当然,在这个环境中可能会有一些特殊的限制(关于字节码操作),我不知道(?)

+0

Drat,看起来非常酷,我不确定它会在我们的具体情况下工作。它看起来像jarjar替换了jar任务,但我们不使用jar来构建 - BlackBerry有自己的ant任务rapc来处理编译。你知道是否有可能使用jarjar *只做*包重命名步骤? – 2011-03-04 21:30:55

+0

@Amanda:我做了一个快速的谷歌搜索rapc(我对此一无所知)。看起来,它也可以用于jar文件:http://codeforfun.wordpress.com/2008/09/09/how-to-use-rapc-from-rim-dirty-details/“最后参数应该指定包含已编译类的jar文件,或者指定要编译的.java文件的列表。“如果这样的话,你可以先将你的类放入jar中,然后应用jarjar,然后在jar上运行rapc。 – 2011-03-04 21:43:08

我对Bamboo并不熟悉,也没有包含关于构建系统的更多信息。如果您正在使用Maven,你可以使用shade plugin

此插件提供的能力打包神器在尤伯杯罐子,包括它的依赖和遮阳 - 即重命名 - 一些依赖的包。

second example here显示如何配置程序包重命名。生成的jar文件将不得不由rapc进行处理,如Chris Lerchers评论his answer。应该也可以使用exec plugin将其集成到maven版本中。