将属性文件值读入pom.xml

时间:2012-11-02 13:48:38

标签: maven maven-2 dependency-properties maven-plugin pom.xml

我已经尝试并遵循此解决方案 How to read an external properties file in Maven 但没有运气。

我想从属性文件(与pom.xml位于同一位置)读取绝对路径(/ home / tomcat / lib)并在pom.xml中设置值

project.properties文件包含:

myTomCat.lib.location = /家庭/ Tomcat的/ lib中

pom.xml配置包含:

<properties>
    <envTomcatLib>${myTomCat.lib.location}</envTomcatLib>
</properties>

<dependencies>
<dependency>
           <artifactId>MyJar</artifactId>
       <groupId>MyJar</groupId>
       <scope>system</scope>
       <version>1.0</version>
       <systemPath>/${envTomcatLib}/MyJar.jar</systemPath>
 </dependency>
</dependencies>

  <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>${basedir}/project.properties</file>
          </files>
        </configuration>
      </execution>
    </executions>
  </plugin>  

问题是在eclipse编译时或运行“mvn install”,占位符$ {envTomcatLib} /MyJar.jar无法解析为/home/tomcat/lib/MyJar.jar并且仍为$ {envTomcatLib } /MyJar.jar。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

最初加载POM时会分配<properties>部分中的值。 properties-maven-plugin仅影响在加载属性之后的插件执行。我提供的similar answer更多细节。

BTW,Maven Reference Book对系统范围有这样的说法:“请注意,不推荐使用此范围(您应该总是尝试在公共或自定义Maven存储库中引用依赖项。)

答案 1 :(得分:0)

您可能需要在"/"之前移除/${envTomcatLib}/MyJar.jar或将属性值设为home/tomcat/lib而不是/home/tomcat/lib。这可能是无法解决您的位置的原因。