maven中 pom.xml与properties等配置文件之间互相读取变量

时间:2023-03-09 06:37:22
maven中 pom.xml与properties等配置文件之间互相读取变量

问题由来:

最近公司的maven项目需要改进,希望把该项目依赖的一系列artifact放到properties文件中,这样做的目的是是为了很容易看到四月份release和七月份的release,它们所依赖的artifact的版本多少,以及版本之间的差别。当然能做到这个,有很多方法,比如定义很多个profile,把那些artifact的version都写在其中,这样做好处简单,不要对项目的pom改动太大,坏处是当release很多时,根pom会变得特别大。我采用的的方式是将每个release dependencies 放在properties文件中。这就涉及到pom.xml如何读取properties文件的变量。

问题一:

pom.xml读取properties文件的变量

解决办法:

我的properties的一些列文件在该项目下的properties文件夹中

在根pom添加插件:

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${user.dir}/properties/2017.11.release.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

然后就可以直接在pom(包括子module中的pom)里面引用2017.11.release.properties中定义的变量了。

问题二:

properties文件读取pom.xml中定义的变量

***我的properties的一些列文件在该项目下的properties文件夹中

在pom加上如下代码:

      <resources>
<resource>
<directory>${project.basedir}/properties</directory>
<filtering>true</filtering>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>

properties中就可以直接应用pom定义的变量,引用的方法version=${pom中定义的变量名}

如果有错误,还望大家指正。