gpt4 book ai didi

maven-2 - 如何在 Maven2 模块之间共享过滤器文件?

转载 作者:行者123 更新时间:2023-12-04 14:36:53 30 4
gpt4 key购买 nike

我有一个多模块项目,我想定义一个过滤器文件,它将属性应用于所有子模块。例如,我想有以下结构:

parent
- filter.properties
- 模块1
- 资源1
- 模块2
- 资源2

这样当我构建父模块时,它会在构建子模块时将过滤器应用于资源 1 和资源 2。

如果我创建上面的结构并在父 POM 中定义过滤器,则构建失败,因为它希望在每个子模块中定义过滤器......有没有一种我忽略的简单方法来做到这一点?

最佳答案

This answer描述了如何扩展 properties-maven-plugin 以允许在项目之间共享属性文件。如果您使用该插件,则属性将可用于构建,因此可以在过滤资源时使用。

或者,您可以将过滤器文件指定为某个构建的附加工件,以便它在存储库中可用,然后使用依赖插件下载过滤器文件,最后指定过滤器使用共享文件。

要将过滤器附加到您的父版本,请使用 build-helper-maven-plugin的附加目标:

  <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>src/main/resources/shared-filter.properties</file>
<type>properties</type>
<classifier>filter</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>

部署托管过滤器的项目后,过滤器现在将附加到它旁边。

要将过滤器文件下载到您的项目中,请使用 maven-dependency-plugin的 copy-dependencies 下载文件的目标:
  <plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>name.seller.rich</groupId>
<artifactId>shared</artifactId>
<version>1.0.0</version>
<classifier>filter</classifier>
<type>properties</type>
<overWrite>false</overWrite>
<destFileName>shared-filter.properties</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>
${project.build.directory}/filters
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

如果在你的父项目中定义了依赖插件配置,那么所有其他项目都可以继承该配置,不需要重新定义它。

然后使用下载的过滤器:
<filters>
<filter>${project.build.directory}/filters/shared-filter.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>

关于maven-2 - 如何在 Maven2 模块之间共享过滤器文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1528254/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com