我正在使用 Maven (3.x) 在 Hudson 中构建一个 Android 应用程序。作为构建的一部分,我使用过滤/配置文件对 strings.xml 文件进行文本替换。
所以在 strings.xml 中,我将有如下条目:
<string name="app_name">${app_name}</string>
在 pom.xml 文件中,我有配置文件条目:
<profiles>
<profile>
<id>local</id>
<properties>
<app_env>local</app_env>
<app_name>Acme-loc</app_name>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
<app_env>dev</app_env>
<app_name>Acme-dev</app_name>
</properties>
</profile>
....
当我查看 *.apk 内部时,strings.xml 文件被正确替换。但是,当安装在设备中时,我看到 ${app_name} 这让我相信替换是在应用程序编译之后发生的。我可以指定替换发生在构建的哪一步吗?
最佳答案
在标准的 maven 构建中,资源过滤发生在 process-resources,它在编译之前,在包之前。如果没有关于如何设置资源过滤以及如何构建包的更多详细信息,就很难说更多。
编辑: 看起来您可能正在使用 android 插件的 generate-sources 生成 R.java 文件目标,对吧?这很可能与生成源阶段有关。您的 strings.xml 直到进程资源阶段才会被过滤,即 later in the build .您需要确保 android 目标在资源过滤发生后 运行,并且它指向输出 strings.xml 文件,而不是源文件。
关于filtering - Maven 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6630511/