使用来自外部依赖项的过滤器文件过滤 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>
在 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>