7

我正在尝试在我的 maven pom 中激活配置文件,如下所示:-

    <profile>
        <id>test</id>
        </properties>
        <activation>
            <property>
                <name>env.SITE</name>
                <value>test</value>
            </property>
        </activation>
    </profile>

现在我将heroku配置为具有环境变量SITE,如下所示:-

heroku 配置:添加站点=测试。

我希望环境变量在推送代码时触发配置文件。然而,这并没有发生。

4

5 回答 5

13

您可以在没有自定义构建包的情况下执行此操作。

在你的 pom.xml 中使用这个片段来显示 Heroku 上所有可用的属性并选择一个不在你本地的属性:http: //florianlr.wordpress.com/2012/04/24/16/

我使用了 env.DYNO

    <profile>
        <id>heroku</id>
        <activation>
            <property>
                <name>env.DYNO</name>
            </property>
        </activation>
    ...
    </profile>
    ...

奇迹般有效:)

于 2013-11-02T18:52:19.773 回答
2

或者您可以引入自己定制的 Mavensettings.xml文件,例如heroku-settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- activate by setting the MAVEN_SETTINGS_PATH config var to heroku-settings.xml in Heroku project settings tab.
    See https://devcenter.heroku.com/articles/using-a-custom-maven-settings-xml for more details.
     -->

    <activeProfiles>
        <activeProfile>production</activeProfile>
    </activeProfiles>
</settings>

然后通过在 Heroku 项目设置选项卡中设置MAVEN_SETTINGS_PATHconfig var 来激活设置heroku-settings.xml

于 2019-08-29T08:12:03.530 回答
2

您可以使用环境变量指定 Maven 配置文件MAVEN_CUSTOM_OPTS

在你的 pom 中定义 maven 配置文件激活是基于属性的存在。如果您指定,下面的示例将使用开发配置文件,如果您不指定,则默认使用生产配置文件。参考

<profiles>
    <profile>
        <id>production</id>
        <activation>
            <property>
                <name>!profile-development</name>
            </property>
        </activation>
    </profile>
    <profile>
        <id>development</id>
        <activation>
            <property>
                <name>profile-development</name>
            </property>
        </activation>
    </profile>
</profiles>

在 Heroku 中设置MAVEN_CUSTOM_OPTS环境变量以使用配置文件。请注意,此变量会覆盖默认选项-DskipTests参考

MAVEN_CUSTOM_OPTS=-DskipTests -Dprofile-development

在此示例中,不需要MAVEN_CUSTOM_OPTS声明生产配置文件。

于 2020-09-03T04:36:52.063 回答
1

配置变量当前在编译时不可用。要更改 Maven 配置文件,您需要 fork Heroku Java Buildpack

于 2012-06-23T23:52:38.157 回答
0

我通过添加 Heroku Environment 解决了我的问题,如下所示:

MAVEN_CUSTOM_OPTS=-P<profile_id>

并从 pom.xml 中删除“激活”标签。

顺便说一句,我不知道为什么这不起作用(在 Heroku 我有 ENVIRONMENT=test)

<profile>
  <id>test</id>
  <activation>
    <property>
      <name>env.ENVIRONMENT</name>
      <value>test</value>
    </property>
  </activation>
...
</profile>
于 2020-09-13T21:02:14.403 回答