Heroku:使用maven管理不同的属性文件

时间:2014-08-26 14:51:13

标签: maven heroku properties

也许有人可以帮助我。我在网上搜索过,但还没有找到解决方案。

我有一个在Heroku上运行的java应用程序。我希望能够为不同的Heroku实例(dev,test,prod)加载不同的属性文件,但是我得到java.io.FileNotFoundException。这就是我在pom.xml中的内容。

  <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <property>
                    <name>env.APP_ENVIRONMENT</name>
                    <value>dev</value>
                </property>
            </activation>
            <properties>
                <profile.name>dev</profile.name>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <activation>
                <property>
                    <name>env.APP_ENVIRONMENT</name>
                    <value>test</value>
                </property>
            </activation>
            <properties>
                <profile.name>test</profile.name>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <property>
                    <name>env.APP_ENVIRONMENT</name>
                    <value>prod</value>
                </property>
            </activation>
            <properties>
                <profile.name>prod</profile.name>
            </properties>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.github.jsimone</groupId>
                                    <artifactId>webapp-runner</artifactId>
                                    <version>7.0.34.0</version>
                                    <destFileName>webapp-runner.jar</destFileName>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/profiles/${profile.name}</directory>
                <includes>
                    <include>*.xml</include>
                    <include>*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>  

1 个答案:

答案 0 :(得分:0)

如何自定义Maven构建:

您可以为每种构建类型创建一个设置文件:

settings.xml       <-- Default
settings-dev.xml
settings-test.xml
settings-prod.xml

然后可以按如下方式执行生产构建:

heroku config:set MAVEN_SETTINGS_PATH=settings-prod.xml
git push heroku master

详细

Java buildpack支持指定自定义Maven设置文件的方法。

默认情况下,它使用位于构建目录中的设置文件,可以通过设置以下变量之一来覆盖它:

  1. MAVEN_SETTINGS_PATH
  2. MAVEN_SETTINGS_URL