下面是我如何解决它:
这个想法是将所有的属性存储在单独的资源文件中。然后,使用maven resource plugin复制相应的属性文件到values/environment.xml
在项目根目录下建立如下的目录结构:
environment/dev/environment.xml
environment/prod/environment.xml
然后填写资源文件的内容用适当的值。
/dev/environment.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="url">http://dev.mysite.com</string>
</resources>
/prod/environment.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="url">http://prod.mysite.com</string>
</resources>
通过指定阶段时,这个动作加入Maven的资源插件来pom.xml
应执行,要复制的资源以及输出目录:
//...
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<executions>
<execution>
<id>copy-string-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>environment/${environment}/</directory>
<includes>
<include>environment.xml</include>
<filtering>true</filtering>
</includes>
</resource>
</resources>
<overwrite>true</overwrite>
<outputDirectory>${basedir}/res/values/</outputDirectory>
</configuration>
</plugin>
</plugins>
从这一点来说,你可以创建2种运行配置:
mvn validate -Denvironment=dev
mvn validate -Denvironment=prod
,会做什么,但来自evironment/${environment}/environment.xml
复制相应的资源,为values/environment.xml
根据运行配置的,${environment}
将与dev
等于或prod
。
你可以在this页面找到更多相关资讯。
这不是放置属性的适当位置。把它们放在android资源中。 – njzk2
您可以在每次构建项目时创建一个脚本,该脚本将您的pom.xml文件复制到资产文件夹中。然后您可以解析它 – VinceFR
@ njzk2构思是这个属性对于不同的环境会有所不同(构建,生产,分期)。理想情况下,我会有不同的运行配置,启动时会读取相应的属性。如果我将它们放在Android资源中,是否有办法从运行配置中传递一个标志,以便在运行时选择适当的资源(无需手动编辑代码并更改环境)? –