Maven资源筛选-明确指定哪些文件需要属性注入

Maven资源筛选-明确指定哪些文件需要属性注入,maven,maven-3,pom.xml,maven-profiles,maven-resources-plugin,Maven,Maven 3,Pom.xml,Maven Profiles,Maven Resources Plugin,Maven资源插件是否允许在注入Maven概要文件属性期间以灵活的方式排除某些文件 我不想将文件从程序集中排除,只想从注入阶段排除 我正在处理的项目在Settings.xml中为每个部署环境定义了唯一的Maven概要文件(以及相应的属性)。构建项目时,将执行以下步骤 projects POM将resources文件夹定义为应用资源筛选的目标 resources文件夹包含.XML和.PROPERTIES文件 在mvn期间:部署Maven按预期将概要文件属性注入.properties文件 Ma

Maven资源插件是否允许在注入Maven概要文件属性期间以灵活的方式排除某些文件

  • 我不想将文件从程序集中排除,只想从注入阶段排除
我正在处理的项目在Settings.xml中为每个部署环境定义了唯一的Maven概要文件(以及相应的属性)。构建项目时,将执行以下步骤

  • projects POM将resources文件夹定义为应用资源筛选的目标
  • resources文件夹包含.XML和.PROPERTIES文件
  • 在mvn期间:部署Maven按预期将概要文件属性注入.properties文件
  • Maven还将配置文件属性注入到.XML文件中。这不是期望的行为(这些文件包含占位符,允许项目在应用程序部署期间灵活地注入值)
资源插件提供配置选项来定义包含和排除选项,但是选择排除选项也会从程序集文件夹中排除指定的文件,这是不需要的


是否可以告诉Maven哪些文件应该替换占位符?

您可能正在使用该机制,您可以决定是否将其应用于某个文件夹,以及应将哪个过滤器应用于该文件夹

给定以下POM样本:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.sample</groupId>
    <artifactId>resources-example</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <filters>
            <filter>src/main/filters/filter.properties</filter>
        </filters>

        <resources>
            <!-- configuring an additional resources folder: conf -->
            <resource>
                <directory>${project.basedir}/src/main/conf</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>*.txt</exclude>
                </excludes>
                <includes>
                    <include>*.properties</include>
                </includes>
                <targetPath>${project.basedir}/target</targetPath>
            </resource>
        </resources>
    </build>
</project>
(请注意ant和maven样式的占位符。)

而src/main/filters(您需要创建此文件夹)包含具有以下内容的
filter.properties
文件:

## add some properties here
property.example=@property.value1@
property.example2=${property.value2}
property.value1=filtered-value1
property.value2=filtered-value2
property.example=filtered-value1
property.example2=filtered-value2
运行构建时,您将在
target
目录中获得
conf.properties
文件,其中包含以下内容:

## add some properties here
property.example=@property.value1@
property.example2=${property.value2}
property.value1=filtered-value1
property.value2=filtered-value2
property.example=filtered-value1
property.example2=filtered-value2

现在,如果您的过滤器(文件名)是由配置文件注入的属性,那么您可以根据环境注入不同的过滤器,并且只针对某些文件。

好吧,我可能误解了您的问题,将Maven注入与Maven过滤混在一起,而您可能是指配置文件将属性注入运行时构建。但是,从您提到的第一步开始,您确实应用了过滤,对吗?