使用来自外部依赖关系的filter-file过滤maven资源

时间:2015-01-20 13:58:09

标签: maven-2

给定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?

1 个答案:

答案 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>