Java 使用相同的描述符maven程序集插件为不同格式自定义文件夹名称

Java 使用相同的描述符maven程序集插件为不同格式自定义文件夹名称,java,maven,maven-plugin,maven-assembly-plugin,Java,Maven,Maven Plugin,Maven Assembly Plugin,我是maven world的新手,我在maven汇编插件方面遇到了一些问题。我想使用相同的描述符文件为“dir”格式生成具有自定义名称的不同格式 以下是我的maven assembly插件配置:- <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution>

我是maven world的新手,我在maven汇编插件方面遇到了一些问题。我想使用相同的描述符文件为“dir”格式生成具有自定义名称的不同格式

以下是我的maven assembly插件配置:-

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

maven汇编插件
装配
单一的
安装
src/main/assembly/descriptor.xml
服务
假的
目标
这是描述符文件:-

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

装配
拉链
假的
.
target/service.jar
.
假的
src/main/deploy/version.txt
.
真的
src/main/deploy/start.sh
.
真的
src/main/deploy/stop.sh
.
真的
我想使用相同的描述符文件(基本上是要组合的相同文件)到service.zip中,如果我添加,还想在target中创建另一个名为deploy的文件夹

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


任何帮助都将提前感谢。

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

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


${distributionFormat}
pom.xml
中定义了
distributionFormat
。财产的名称由您选择

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


...
...
distAsZip
真的
服务
拉链
distAsDir
假的
部署
迪尔
...
maven汇编插件
装配
单一的
安装
src/main/assembly/descriptor.xml
${assemblyName}
假的
目标
...
现在,您可以执行maven并定义要使用的配置文件:

mvn clean package-PdistAsDir
mvn clean package-PdistAsZip

谢谢@JimHawkins我能够生成所需的文件。