1

我已经尝试并遵循这个解决方案 如何在 Maven 中读取外部属性文件 但没有运气。

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

project.properties 文件包含:

myTomCat.lib.location=/home/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 。罐。

有人可以帮忙吗?

谢谢

4

2 回答 2

1

该部分中的值是在<properties>最初加载 POM 时分配的。properties-maven-plugin唯一影响加载属性点之后的插件执行。我提供的类似答案中有更多详细信息。

顺便说一句,Maven 参考书对系统范围有这样的说法:“请注意,不建议使用此范围(您应该始终尝试在公共或自定义 Maven 存储库中引用依赖项)。”

于 2012-11-02T14:20:20.000 回答
0

您可能需要删除"/"before/${envTomcatLib}/MyJar.jar 或赋予属性值 ashome/tomcat/lib而不是/home/tomcat/lib. 这可能是无法解析您的位置的原因。

于 2013-01-03T09:01:02.277 回答