我是 maven 的新手,并尝试将其配置为使用 android-maven-plugin 构建我的 android 项目。我在 assets 目录中有一个 application.properties 文件,其中包含不同的应用程序设置。我想从我的 pom.xml 中获取这些值。在属性文件中,我将一个属性定义为
myFilteredProperty=${helloFromPOM}
并在 POM 中定义相同的属性:
    <properties>
        <helloFromPOM>MY PROPERTY</helloFromPOM>
    </properties>
打开对资产目录的过滤
<build>
    ...
    <resources>
        <resource>
            <directory>${project.basedir}/assets</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...
</build>
并按照android-maven-plugin的示例配置资源插件
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>resources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
但是,当我尝试在我的应用程序中使用此属性显示 Toast 时,我看到的是 ${helloFromPOM} 而不是我的属性。
在我由 maven 生成的目标目录中,我在两个地方看到了这个属性文件:
- /target/generated-sources/combined-assets/assets/application.properties
 - /target/myapp-0.0.1-SNAPSHOT.apk\application.properties
 
首先是错误的,它包含 ${helloFromPOM} 而不是 MY PROPERTY。二、里面的apk文件是正确的。但是当我在设备上安装这个 apk 时,它会显示错误的值 ${helloFromPOM}。
我做错什么了?
编辑
感谢您的回答,我试过了,但得到这个错误:
[错误] 生成源时出错。org.apache.maven.plugin.MojoExecutionException:在 com.jayway.maven.plugins.android.phase01generatesources.GenerateSourcesMojo.execute( GenerateSourcesMojo.java:102) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache .maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在 org.apache.maven.lifecycle.internal.LifecycleModuleBuilder .buildProject(LifecycleModuleBuilder.java:84) 在 org.apache.maven.lifecycle。 http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
当我<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>在 POM 中评论时,构建完成成功,但它不使用过滤的资产。
我也尝试cmd.exe /X /C ""C:\Program Files\Android\android-sdk\platform-tools\aapt.exe" package -m -J D:\projects\myapp\target\generated-sources\r -M D:\projects\myapp\AndroidManifest.xml -S D:\projects\myapp\target\filtered-assets --auto-add-overlay -A D:\projects\myapp\assets -I "C:\Program Files\Android\android-sdk\platforms\android-8\android.jar""在我的命令行中执行这个并得到这个错误:invalid resource directory name: D:\projects\myapp\target\filtered-assets/application.properties。过滤后的资产后使用错误的斜线而不是反斜线。更改<resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>为<resourceDirectory>${project.build.directory}\filtered-assets</resourceDirectory>也无济于事。
PS我的插件部分看起来像这样
   <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
            <execution>
                <phase>initialize</phase>
                <goals>
                    <goal>resources</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>
    </plugin>
    <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
            <sdk>
                <platform>8</platform>
            </sdk>
            <emulator>
                <avd>2.3.3_API-10</avd>
            </emulator>
            <undeployBeforeDeploy>true</undeployBeforeDeploy>
            <resourceDirectory>${project.build.directory}/filtered-assets</resourceDirectory>
        </configuration>
        <extensions>true</extensions>
    </plugin>