我有许多Maven原型,结构如下
.
├── bundle
├── bundle-for-jcrinstall
├── initial-content
├── launchpad-standalone
├── launchpad-webapp
├── servlet
└── taglib
对于这些,我希望有一个共同的价值来源,例如:插件版本,以便我可以在一个地方为所有模块更改它们。更改应该在生成的pom.xml中结束,因此我将定义例如bundle/src/main/resources/archetype-resources/pom.xml
包含
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
<version>${scrplugin.version}</version>
<executions>
<execution>
<id>generate-scr-descriptor</id>
<goals>
<goal>scr</goal>
</goals>
</execution>
</executions>
<!-- snip ... -->
然后提供bundle/pom.xml file
中的值,理想情况下从父pom继承。问题是,我不知道如何在bundle/pom.xml
中提供此值,以便它可用于生成pom.xml文件。
关于如何做到这一点的任何想法,或其他解决这个问题的方法都是非常感激的。
答案 0 :(得分:2)
默认情况下,资源文件过滤未启用,因此您必须将其打开。
在您父项目的pom中;添加你想要的属性:
<scrplugin.version>1.14.0</scrplugin.version>
在原型pom中,添加资源过滤(假设您使用的是标准Maven组织)
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>2.2</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
这会处理您的poms以替换您定义的任何属性;留下你没有的任何东西。这会将属性放入原型的输出jar中,因此只要在运行archetype:generate命令时使用该原型库,它就是一个集合版本。
希望有所帮助。
-Stopp