使用 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/ 而不是直接在项目的根目录中。
第二个解决方案是使用标志禁用该错误(阅读错误消息稍微高一点以查看该信息和标志的名称,但我不推荐该解决方案)
我在 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/ 而不是直接在项目的根目录中。
第二个解决方案是使用标志禁用该错误(阅读错误消息稍微高一点以查看该信息和标志的名称,但我不推荐该解决方案)