我和这张海报有同样的问题
How to share a filter file among Maven2 modules?
在子项目的所有子项目和子项目中共享过滤器文件
我实施了Rich Seller提供的解决方案......这个特殊的解决方案可行。 “或者,您可以在某些构建中将过滤器文件指定为附加工件”
但是在构建结束时,我收到一条错误消息
[ERROR] BUILD ERROR 安装工件时出错:文件/..../spring/hibernate/search/src/main/resources/shared-filter.properties不存在
我猜Maven正在尝试安装父pom中提供的工件
<configuration>
<artifacts>
<artifact>
<file>src/main/resources/shared-filter.properties</file>
<type>properties</type>
<classifier>filter</classifier>
</artifact>
</artifacts>
</configuration>
有没有办法告诉Maven在构建孩子时不要安装这个工件
请帮助,坚持这一点
***********新加入***************
我的父pom有以下
<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/filters/mradha.filter.properties</file>
<type>properties</type>
<classifier>filter</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.merc</groupId>
<artifactId>MavenMasterProject</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>filter</classifier>
<type>properties</type>
<overWrite>false</overWrite>
<destFileName>mradha.filter.properties</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>
${project.build.directory}/filters
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
我的子项目或模块具有以下内容
<build>
<filters>
<filter>${project.build.directory}/filters/mradha.filter.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</plugins>
</build>
当我点击子项目或模块并进行安装时,它会尝试安装附加的工件并导致构建失败
答案 0 :(得分:2)
我刚刚解决了同样的问题。我们有更多嵌套的项目结构,我首先定义了'filters.path'属性
<properties>
<filters.path>../../filters</filters.path>
</properties>
项目结构(过滤规则)符合以下模式:
<filters>
<filter>${filters.path}/filter-${env}.properties</filter>
<filter>${filters.path}/filter-shared.properties</filter>
</filters>
我只有2个需要自定义过滤的项目,我刚刚更改了'filters.path'属性
<properties>
<env>dev</env>
<filters.path>../filters</filters.path>
<jbehave-revision>3.4.5</jbehave-revision>
<xmlunit-revision>1.3</xmlunit-revision>
<scale4j-revision>0.2</scale4j-revision>
</properties>
希望这有帮助!
答案 1 :(得分:0)
上面发布的xml片段是否存在于每个孩子中?如果是这样,那就解释了问题。
如果您仔细检查链接的SO帖子中@Rich Seller建议的步骤,则父项目应attach
使用build-helper-maven-plugin
过滤器工件。需要过滤的子项应使用maven-dependency-plugin
在generate-sources
阶段使此过滤器可用。然后,他们应该使用<filter>
和<resource>
标记来使用过滤器。