在maven中使用属性文件

时间:2013-05-10 07:06:30

标签: java maven properties

我不太明白它是如何使用的。文件中定义了一个属性。我尝试使用maven属性插件来读取并保存。该属性用于liquibase插件:

<plugin>
<groupId>org.codehaus.mojo</groupId>
  <artifactId>properties-maven-plugin</artifactId>
  <version>1.0-alpha-1</version>
  <executions>
    <execution>
      <phase>initialize</phase>
      <goals>
        <goal>read-project-properties</goal>
      </goals>
      <configuration>
       <files>
          <file>src/main/resources/properties/app.properties</file>
        </files>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>2.0.5</version>
    <configuration>
        <propertyFile>src/main/resources/db/config/${env}-data-access.properties</propertyFile>
        <changeLogFile>src/main/resources/db/changelog/db.changelog-master.xml</changeLogFile>
        <migrationSqlOutputFile>src/main/resources/db/gen/migrate.sql</migrationSqlOutputFile>
        <!--<logging>debug</logging>-->
        <logging>info</logging>
        <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
        <!--<verbose>false</verbose>-->
        <dropFirst>true</dropFirst>
    </configuration>
</plugin>
  1. 根据文档为了阅读属性并保存它我必须运行:mvn properties:read-project-properties。但在这种情况下我收到以下错误:

    [错误]无法在项目SpringWebFlow上执行目标org.codehaus.mojo:properties-maven-plugin:1.0-alpha-2:read-project-properties(default-cli): 目标org.codehaus.mojo的参数'files':properties-maven-plugin:1.0-alpha-2:read-project-properties缺失或无效 - &gt; [帮助1]

  2. 我更改了pom.xml,删除了<execution>部分并移动了<configuration>部分:

    <groupId>org.codehaus.mojo</groupId>
      <artifactId>properties-maven-plugin</artifactId>
      <version>1.0-alpha-1</version>
      <configuration>
        <files>
            <file>src/main/resources/properties/app.properties</file>
        </files>
      </configuration>
    

    确定。现在,当我运行mvn属性时:read-project-properties错误消失了。但在这种情况下,财产被保存了吗?因为当我开始以下maven目标时:

    mvn liquibase:update
    

    我可以看到$ {env}属性未定义。 Liquibase尝试使用src/main/resources/db/config/${env}-data-access.properties文件。

    我做错了什么?如何从文件中读取属性,以便可以从不同的maven插件访问它?

1 个答案:

答案 0 :(得分:1)

问题在于“mvn liquibase:update”是一个特殊的插件目标,并不是maven生命周期的一部分。因此它永远不会通过初始化阶段,因此不会执行属性插件。

以下内容可行

mvn initialize liquibase:update

一种解决方案是调用liquibase:更新其中一个maven lifecylce阶段,如compile,package ......,但随后它将在每次构建时执行。

或者您使用maven-exec插件从maven调用“initialize liquibase:update”。或者你绑定liquibase创建一个配置文件:更新到lifecylce阶段初始化,并在你调用时执行udate

mvn initialize -Pliquibase

我不知道这个问题的更好解决方案,我找不到合适的解决方案。

供参考: Maven lifecycle