filtering - Maven 过滤

标签 filtering maven-3 android-maven-plugin

我正在使用 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/

相关文章:

c# - 过滤使用嵌套的 xaml 数据模板显示的分层对象

php - Jquery 的更改功能使用 ajax 将值传递到数据库文件。但仅在第一次工作

xcode - 过滤用户启动的应用程序 (Mac OS X)

ios - 在数组中的对象上使用过滤器来查找最大值? [ swift ]

Android源码使用maven-android-plugin

android - 使用 maven 构建 apk 中的 ClassNotFoundException

java - 如何配置 Guice 3.0 的 Maven 依赖项以便在没有 AOP 的情况下使用?

java - 读取属性文件时出现空指针异常

java - 即使构建成功,构建也会被标记为不稳定

android - Maven 版本 :perform doesn't recognize keystore parameters