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的复制依赖目标要下载的文件:
<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>
+1不错答案丰富。曾听说过这个:http://www.mail-archive.com/[email protected]/msg00202.html? – 2009-10-06 22:07:45
谢谢里奇,这应该为我工作。不是像我希望的那样简单:) – David 2009-10-06 22:32:39
我尝试了上面的解决方案,它部分工作。当我尝试执行mvn安装时,它会复制资源,但最终还会尝试将它们部署到存储库,并在此期间在子模块的src/main/resource中查找资源,并且我得到以下例外 – user373201 2011-01-03 04:55:01