使用来自外部依赖项的过滤器文件过滤 Maven 资源

Filter maven resources with filter-file from external dependency

在 Maven 项目 A

中给定一个 属性 文件

我想在项目B中使用它们进行资源过滤。

所以在项目 B 中我使用

<build>
        <filters>
            <filter>${project.build.directory}/myFile.properties</filter>
        </filters>
 </build>

根据 myFile.properties 中的值过滤我的资源 此文件存储在项目 A 中。所以我将其包含在

    <build>
  <plugins>
    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>groupa</groupId>
                                <artifactId>a</artifactId>
                                <version>${project.version}</version>
                                <type>test-jar</type>
                                <outputDirectory>${project.build.directory}</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

问题是资源过滤发生在复制依赖项之前。因此,当手动将 myFile.properties 复制到 ${project.build.directory} 时过滤确实有效,但它不适用于 mvn clean ...

如何在实际过滤发生之前复制 filterFile?

Maven 插件按照它们在 pom 中出现的顺序执行。 AFAIK 在父级(和超级 pom)中配置的插件在 pom 的插件之前执行。

我的建议是在依赖插件之后明确声明资源插件:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <!-- ... -->
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <!-- ... -->
    </plugin>
  </plugins>
</build>