26

我的应用程序中有一个名为 ApplicationResources.properties 的属性文件,其属性会根据环境而变化。让我们说属性是:

     resources.location=/home/username/resources

并且在开发期间执行应用程序和应用程序投入生产时,此值是不同的。

我知道我可以在 Maven 中使用不同的配置文件在不同的环境中执行不同的构建任务。我想要做的是根据正在使用的 Maven 配置文件以某种方式替换属性文件中 resources.location 的值。这甚至可能吗?

4

1 回答 1

51

我想要做的是根据正在使用的 Maven 配置文件以某种方式替换属性文件中 resources.location 的值。这甚至可能吗?

是的。激活资源过滤并在每个配置文件中定义要替换的值。

在您的ApplicationResources.properties中,声明一个要替换的令牌,如下所示:

resources.location=${your.location}

在您的 POM 中,<filtering>为适当的标签添加一个标签<resource>并将其设置为 true,如下所示:

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      ...
    </resources>
    ...
  </build>
  ...
</project>

然后,在每个配置文件<your.location>内的元素内添加一个元素:<properties>

<project>
  ...
  <profiles>
    <profile>
      <id>my-profile</id>
      ...
      <properties>
        <your.location>/home/username/resources</your.location>
      </properties>
      ...
    </profile>
    ...
  </profiles>
</project>

更多关于资源过滤的信息在这里这里

于 2010-02-25T16:05:54.517 回答