管理多个Maven原型的常用值

时间:2014-04-24 09:12:17

标签: maven maven-3 maven-archetype

我有许多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文件。

关于如何做到这一点的任何想法,或其他解决这个问题的方法都是非常感激的。

1 个答案:

答案 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