我想对maven过滤器标签及其与插件properties-maven-plugin中的files标签的对应方式有一个解释。
相关个人资料:
<profile>
<id>local-spm-caefeeder-preview</id>
<build>
<plugins>
<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>
<quiet>true</quiet>
<files>
<file>${main.basedir}/src/config/global.properties</file>
<file>${main.basedir}/src/config/caefeeder/caefeeder_global.properties</file>
<file>${main.basedir}/src/config/caefeeder/caefeeder_preview.properties</file>
<file>${main.basedir}/src/config/local.properties</file>
<file>${main.basedir}/src/config/${user.name}.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<filters>
<filter>${main.basedir}/src/config/caefeeder/caefeeder_global.properties</filter>
<filter>${main.basedir}/src/config/caefeeder/caefeeder_preview.properties</filter>
<filter>${main.basedir}/src/config/local.properties</filter>
<filter>${main.basedir}/src/config/${user.name}.properties</filter>
</filters>
</build>
</profile>
从我的研究过滤器中定义了包含需要替换的变量的文件。 是&#34; properties-maven-plugin&#34;从files tag?
中定义的文件中提供这些变量答案 0 :(得分:4)
首先,要让Maven过滤器真正起作用,您需要为某些目录启用资源过滤,例如
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
只列出一些过滤器文件什么都不做,因为这些读取值不会在任何地方使用。
现在,这里有不同的解释。 read-project-properties
的目标properties-maven-plugin
从属性文件中读取一些值并将其存储为Maven变量。它在Maven生命周期(<phase>initialize</phase>
)内很早就执行了,因此它们几乎从一开始就可用。因此,我们可以说这是一种外部化Maven属性的方法,方法是将它们放入一些常规属性文件中,而不是<properties>
中可能存在巨大的pom.xml
块。重要的是,Maven变量用于资源过滤。
现在,<filters>
标记。这些文件不提供Maven项目变量。它们提供仅用于资源过滤的变量。
因此,在资源过滤的上下文中,实际行为是完全相同的。由properties-maven-plugin
读取的属性将用于资源过滤以及从过滤器文件读取的属性。但是,properties-maven-plugin
读取的内容也可用作Maven项目属性,因此可以使用它们,例如在插件的配置或任何其他与POM相关的东西。