Maven 读取 .env 文件并设置环境变量

问题描述 投票:0回答:1

我有一个 .env 文件,其中包含以下内容:

SOME_PROPERTY_I_NEED_IN_MY_UNIT_TESTS=xyz

我需要 Maven 加载此 .env 文件并将其中的所有变量导出为环境变量以进行测试。

这需要是在文件系统上定义的文件(例如,在

/tmp/.env
中)而不是在类路径中。

我还需要通过 maven 加载它,因为这仅用于单元测试(实际上运行代码将从其他地方获取环境变量,而不是加载

.env
文件)。

我该怎么做?

maven
1个回答
0
投票

您可以使用 Properties Maven 插件

来完成此操作

下面是我实现此功能的 pom 文件的这一部分。我正在阅读

.env
和我的
application.properties
文件。

  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <useDefaultValues>true</useDefaultValues>
              <files>
                <file>${project.basedir}/.env</file>
                <file>${project.basedir}/src/main/resources/application.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

如果您正在运行

mvn test
,我认为这应该符合您的预期。

对于我最初的用例,我需要为 Maven Flyway 插件获取一些值。这需要包括

initialize
阶段:
mvn initialize flyway:info

其次,我想使用

application.properties
文件中的 env 值。这允许这样做。所以如果
.env

DB_USERNAME=user

那么

application.properties
可以有

spring.datasource.username=${DB_USERNAME}
spring.flyway.user=${DB_MAINTENANCE_USERNAME:${DB_USERNAME}}

请注意,将

useDefaultValues
设置为
true
可以像我为
spring.flyway.user
那样设置后备值。否则,不需要该选项。

© www.soinside.com 2019 - 2024. All rights reserved.