1

假设我在pom.xml文件中声明了以下属性。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org
    /2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    // ....

    <properties>
        <dev.url>http://dev.mysite.com</dev.url>
        <staging.url>http://staging.mysite.com</staging.url>
        <prod.url>http://prod.mysite.com</prod.url>
    </properties>

</project>

我想做的是有不同的运行配置,并根据我设置的一些标志来读取相应的属性。例如,在为生产构建时,在运行时读取prod.url属性,在为暂存构建时,读取staging.url属性。

4

1 回答 1

3

这是我解决它的方法:
想法是将所有属性存储在单独的资源文件中。然后,使用maven 资源插件将相应的属性文件复制到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>

pom.xml通过指定执行此操作的阶段、要复制的资源和输出目录来添加 maven 资源插件:

//...
<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}将等于devprod

您可以在此页面上找到更多信息。

于 2013-07-18T15:31:49.717 回答