使用 Android maven 插件设置过滤资源

Setting filtered resources with Android maven plugin

我在 Android 项目中使用 Maven,并使用 Android Maven Plugin v4.0.0 对其进行编译。

我的问题是,我在 pom 中有不同的配置属性,以防我想为开发、发布而编译……并在 /target/filtered-res 中获得我想要的正确值。例如:

pom.xml

<profile>
    <id>release</id>
    <activation>
        <property>
            <name>release</name>
        </property>
    </activation>
    <properties>
        <!-- server for release -->
        <server.host>server.release.com</server.host>
        <server.port>443</server.port>
    </properties>
</profile>
<profile>
    <id>develop</id>
    <activation>
        <property>
            <name>develop</name>
        </property>
    </activation>
    <properties>
        <!-- server for develop -->
        <server.host>server.develop.com</server.host>
        <server.port>8080</server.port>
    </properties>
</profile>

然后在 mi res 文件夹中,在 properties.xml:

<!-- Server -->
<string name="host">${server.host}</string>
<string name="port">${server.port}</string>

通过这种方式,我总是在 target/filtered-res、properties.xml 中拥有正确的配置。

<!-- Server -->
<string name="host">server.release.com</string>
<string name="port">443</string>
<!-- Configuration if I've compiled for release -->

所有这些都适用于旧的 Android Maven 插件 (com.jayway.maven.plugins.android.generation2) v3.6.0,配置如下:

<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <extensions>true</extensions>
    <version>3.6.0</version>
    <configuration>
        <manifest>
            <debuggable>true</debuggable>
        </manifest>
        <sdk>
            <platform>${android.platform}</platform>
        </sdk>
        <resourceDirectory>${project.build.directory}/filtered-res</resourceDirectory>
    </configuration>
</plugin>

根据需要设置资源目录,"filtered-res"配置正确

但是,当升级到 Android Maven Plugin 4.0.0 时,编译失败并显示以下消息:

[WARNING] Non-standard location of Android res folder found, but not configured:
/Users/myUser/RepoGit/workspace/myProject/res
Move to the standard location src/main/res/
Or configure resourceDirectory.

而且配置和以前一样...

<plugin>
    <groupId>com.simpligility.maven.plugins</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <extensions>true</extensions>
    <version>4.0.0</version>
    <configuration>
        <manifest>
            <debuggable>true</debuggable>
        </manifest>
        <sdk>
            <platform>${android.platform}</platform>
        </sdk>
        <resourceDirectory>${project.build.directory}/filtered-res</resourceDirectory>
    </configuration>
</plugin>

如您所见,资源目录已设置...但是插件声明和构建失败。

我可以将我的 res 文件夹移动到 /src/main/res,正如警告消息所说...但这并没有解决我的问题,因为我的具有正确值的过滤资源位于 /target/filtered-res。

谁能告诉我哪里出了问题?

而且,如果没有问题,那是插件的错误...是否有另一种方法可以使用 pom 文件的不同配置进行编译?

注意: 不能降级到旧的 Android Maven 插件。

任何帮助将不胜感激。

非常感谢,也很抱歉这么大 post。

新插件遵循新的文件夹结构。

我鼓励您切换到正确的文件结构。 res & assets 需要在 src/main/ 而不是直接在项目的根目录中。

第二个解决方案是使用标志禁用该错误(阅读错误消息稍微高一点以查看该信息和标志的名称,但我不推荐该解决方案)