给定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?
答案 0 :(得分:0)
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>