Android 使用maven为不同的客户构建多个.apk工件

Android 使用maven为不同的客户构建多个.apk工件,android,maven,continuous-integration,apk,Android,Maven,Continuous Integration,Apk,我必须为客户设置一个android maven构建,它以前是基于ant的 基本应用程序是一个白标签实现,该应用程序分发给多个第三方客户。每个客户版本都使用相同的源代码和一组共享资源。但每个客户也有一些特定于其公司的资源(常量、资产等) 我的android项目的结构如下所示。我只包含了相关的文件/文件夹,结构保留在ant构建中: App |--src |--res |--res-customer1 |--res-customer2 |--pom.xml 这意味着我必须使用不同的资源从同一个源构建

我必须为客户设置一个android maven构建,它以前是基于ant的

基本应用程序是一个白标签实现,该应用程序分发给多个第三方客户。每个客户版本都使用相同的源代码和一组共享资源。但每个客户也有一些特定于其公司的资源(常量、资产等)

我的android项目的结构如下所示。我只包含了相关的文件/文件夹,结构保留在ant构建中:

App
|--src
|--res
|--res-customer1
|--res-customer2
|--pom.xml
这意味着我必须使用不同的资源从同一个源构建多个.apk工件。最好的方法是什么

我尝试的第一件事是在我的主要项目pom中为每个客户使用不同的配置文件。然后我编写了一个shell脚本来执行所有maven构建(每个客户1个)

然后,我想到在我的主项目中只使用一个发布概要文件,并通过命令行传递特定于客户的属性。属性通过shell脚本传递,类似于我的第一种方法

但我对此不满意,所以我考虑使用多个模块。每个顾客一个。但我这里的问题是,如何从同一个源代码构建它们,而不将源代码从主项目复制到所有模块? 或者我必须为每个客户设置一个android项目,并将我的主要项目称为apklib?这会合并共享资源和特定于客户的资源吗

有这样做的最佳实践吗


任何其他方法都是非常受欢迎的。

对于微小的差异,只需在资源过滤器中使用概要文件和一些不同的属性就足够了。然而,在Maven世界中,配置文件有点糟糕,很难使用

您希望为每个客户使用单独的模块并使基础应用程序成为apklib的想法是正确的。我知道有几个人在maven android开发者列表上报告说,这是他们使用和为他们工作的东西。我个人也会在你的案例中使用这种方法

总的来说,我建议提出或至少提到这个问题