首页 > 解决方案 > 如何为插件的不同执行提供不同的属性集?

问题描述

maven-assembly-plugin用来组装不同的工件如下:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>configuration-staging</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
                <execution>
                    <id>configuration-production</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

assembly.xml中,我启用了模板过滤:

<fileSets>
    <fileSet>
        <filtered>true</filtered>

这很好用。例如,如果我输入${name}要组装的资源之一,则将其替换为项目名称。我还可以在 中定义属性pom.xml,这些属性将被插件替换。

现在,我希望每次执行maven-assembly-plugin. 例如,我想介绍一个${url}包含要在目标环境中使用的 URL(staging以及production在上面的示例中)的 URL。

这可能吗?如何?

标签: mavenmaven-3maven-assembly-plugin

解决方案


显然,可以为每个执行传递不同的属性,maven-assembly-plugin如下所示:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptors>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>configuration-staging</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <finalName>staging</finalName>
                        <filters>
                            <filter>src/main/assembly/staging.properties</filter>
                        </filters>
                    </configuration>
                </execution>
                <execution>
                    <id>configuration-production</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <finalName>production</finalName>
                        <filters>
                            <filter>src/main/assembly/production.properties</filter>
                        </filters>
                    </configuration>
                </execution>
            </executions>
        </plugin>

虽然这没有回答一般问题,但它专门回答了maven-assembly-plugin.

更多可以在https://maven.apache.org/plugins/maven-assembly-plugin/examples/single/filtering-some-distribution-files.html上找到。


推荐阅读