我最近发现BlackBerry 将具有相同完全限定名称的所有类视为相同——无论它们是否位于完全不同的应用程序中——导致使用我们共享库的不同版本的应用程序在安装到同一部手机。
为了解决这个问题,我们计划更改包名称以包含版本号,然后构建。有人可以解释一下,我如何使用 Bamboo 在我们的构建过程中插入一个步骤:
- 更改某些包名称
- 用对新包名的引用替换对旧包名的所有代码引用?
我最近发现BlackBerry 将具有相同完全限定名称的所有类视为相同——无论它们是否位于完全不同的应用程序中——导致使用我们共享库的不同版本的应用程序在安装到同一部手机。
为了解决这个问题,我们计划更改包名称以包含版本号,然后构建。有人可以解释一下,我如何使用 Bamboo 在我们的构建过程中插入一个步骤:
jarjar是专门用于更改 jar 文件中 Java 类的完全限定名称的一个很棒的工具。它可以在 Ant 中轻松使用,也可以从 shell 脚本中轻松使用。
我从未使用过 Bamboo - 我想,它也应该在那里工作。当然,在那个环境中可能会有一些特殊的限制(关于字节码操作),我不知道(?)
我对 Bamboo 不熟悉,并且您没有提供有关构建系统的太多信息。如果您使用的是 maven,则可以使用shade 插件:
这个插件提供了将工件打包在 uber-jar 中的能力,包括它的依赖项和遮蔽 - 即重命名 - 一些依赖项的包。
此处的第二个示例显示了如何配置包重命名。然后必须由 rapc 处理生成的 jar 文件,如Chris Lerchers对他的回答的评论。应该可以使用exec 插件将其集成到 maven 构建中。