如何为插件的不同执行提供不同的属性集?

pbi*_*len 7 maven-3 maven maven-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>
                </execution>
                <execution>
                    <id>configuration-production</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

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

<fileSets>
    <fileSet>
        <filtered>true</filtered>
Run Code Online (Sandbox Code Playgroud)

这非常有效.例如,如果我输入${name}要组装的其中一个资源,则将其替换为项目名称.我还可以定义属性pom.xml,它将被插件替换.

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

这可能吗?怎么样?

小智 5

显然,可以为每次执行传递不同的属性,如下所示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>
Run Code Online (Sandbox Code Playgroud)

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

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