从外部配置文件获取maven属性

时间:2016-09-16 10:07:18

标签: maven properties-file

我让野生动物插入此属性以外部配置主机名,用户等

<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <version>1.0.0.Final</version>
    <configuration>
        <hostname>${wildfly.hostname}</hostname>
        <port>${wildfly.port}</port>
        <username>${wildfly.username}</username>
        <password>${wildfly.password}</password>
    </configuration>
    <executions>
        <execution>
            <!-- <phase>package</phase> -->
            <!-- <goals> -->
            <!-- <goal>deploy</goal> -->
            <!-- </goals> -->
        </execution>
    </executions>
</plugin>

然后我创建了一个包含属性(file.properties)

的文件
wildfly.hostname=127.0.0.1
wildfly.port=19990
wildfly.username=user
wildfly.password=pass

我想在调用mvn wildfly:deploy时从文件中获取变量。我尝试了几种方法:

  1. 使用<properties>并且它有效,但它位于pom.xml
  2. 使用properties-maven-plugin使用<phase>pre-clean</phase>加载外部文件,但它不起作用。
  3. 这里的问题是,最后我想创建一个具有不同配置文件的配置文件夹,即不同的用户,传递等。

    关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:3)

不要将properties-maven-plugin绑定到pre-clean阶段。将它绑定到initialize阶段会更合适。来自lifecycle reference

  

initialize:初始化构建状态,例如设置属性或创建目录。

但问题是,当您直接调用mvn wildfly:deploy时,不会运行此阶段。通过这样做,您告诉Maven只运行wildfly-maven-plugin的执行。因此,它不会执行默认或清洁生命周期的任何内置阶段。

在您的情况下,您实际上需要设置这些属性,因此您需要运行initialize阶段。为此,您可以使用mvn initialize wildfly:deploy。这里使用initialize的优点是默认生命周期的其余阶段不会运行,所以它会像以前一样快。

在Maven中,<filters>有不同的用途:它们用于通过用特定值替换占位符来修改资源内容,这些值可以来自属性文件。因此<filters>不适用于此用例,properties-maven-plugin非常适合它。