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