【问题标题】:Customize folder name using same descriptor maven assembly plugin for different format使用相同的描述符 maven 程序集插件为不同的格式自定义文件夹名称
【发布时间】:2016-12-21 20:15:43
【问题描述】:

我是 maven 世界的新手,我在使用 maven 程序集插件时遇到了一些问题。我想使用相同的描述符文件为“dir”格式生成具有自定义名称的不同格式。

以下是我的 maven 程序集插件配置:-

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <id>assembly</id>
                <goals>
                    <goal>single</goal>
                </goals>
                <phase>install</phase>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/descriptor.xml</descriptor>
                    </descriptors>
                    <finalName>service</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <outputDirectory>target</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>

这是描述符文件:-

<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>assembly</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <baseDirectory>.</baseDirectory>
    <files>
        <file>
            <source>target/service.jar</source>
            <outputDirectory>.</outputDirectory>
            <filtered>false</filtered>
        </file>
        <file>
            <source>src/main/deploy/version.txt</source>
            <outputDirectory>.</outputDirectory>
            <filtered>true</filtered>
        </file>
        <file>
            <source>src/main/deploy/start.sh</source>
            <outputDirectory>.</outputDirectory>
            <filtered>true</filtered>
        </file>
        <file>
            <source>src/main/deploy/stop.sh</source>
            <outputDirectory>.</outputDirectory>
            <filtered>true</filtered>
        </file>
    </files>
</assembly>

我想在 service.zip 中使用相同的描述符文件(要组合的基本相同的文件),如果我添加的话,还要在名为 deploy 的目标中创建另一个文件夹

<format>dir</format>

然后它将在目标下创建一个名为 service 的文件夹,并将包含所有列出的文件。我想要一种方法来自定义要“部署”的目录名称。我尝试检查文档,但找不到任何有用的信息,除非我创建另一个不正确的描述符,因为我的新描述符将具有与前一个相同的配置,只是格式为“dir”。

任何帮助将不胜感激。

【问题讨论】:

    标签: java maven maven-plugin maven-assembly-plugin


    【解决方案1】:

    您可以通过使用不同的maven profiles 来实现您的要求。在

    在您的程序集描述符中,您使用属性而不是固定字符串:

    <formats>
        <format>${distributionFormat}</format>
    </formats>
    

    distributionFormatpom.xml 中定义。物业名称由您选择。

    在您的pom.xml 中,您在两个不同的配置文件中定义distributionFormat。您还可以在此处为程序集定义一个名称(在我的示例中为assemblyName)。

    <project>
        ...
        ...
        <profiles>
             <profile>
                  <id>distAsZip</id>
                  <activeByDefault>true</activeByDefault>
                  <assemblyName>service</assemblyName>
                  <distributionFormat>zip</distributionFormat>
             </profile>
             <profile>
                  <id>distAsDir</id>
                  <activeByDefault>false</activeByDefault>
                  <assemblyName>deploy</assemblyName>
                  <distributionFormat>dir</distributionFormat>
             </profile>
        </profiles>
        ...
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
                <execution>
                    <id>assembly</id>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <phase>install</phase>
                    <configuration>
                        <descriptors>
                            <descriptor>src/main/assembly/descriptor.xml</descriptor>
                        </descriptors>
                        <finalName>${assemblyName}</finalName>
                        <appendAssemblyId>false</appendAssemblyId>
                        <outputDirectory>target</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
     ...
    </project>
    

    现在您可以执行 maven 并定义您要使用的配置文件:
    mvn clean package -PdistAsDirmvn clean package -PdistAsZip

    【讨论】:

    • 感谢@JimHawkins 我能够生成所需的文件。
    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 2020-12-26
    • 2018-07-04
    • 2016-07-26
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多