使用不同格式的相同描述符 maven 程序集插件自定义文件夹名称
Customize folder name using same descriptor maven assembly plugin for different format
我是 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 并在目标中创建另一个文件夹 [= =13=]
<format>dir</format>
然后它将在 target 下创建一个名为 service 的文件夹,并将包含所有列出的文件。我想要一种将目录名称自定义为 "deploy" 的方法。我尝试查看文档但找不到任何有用的信息,除非我创建另一个描述符,这不是正确的方法,因为我的新描述符将具有与前一个相同的配置,格式仅为 "dir".
如有任何帮助,我们将不胜感激。
您可以通过使用不同的 maven profiles 来实现您的要求。在
在您的程序集描述符中,您使用 属性 而不是固定字符串:
<formats>
<format>${distributionFormat}</format>
</formats>
distributionFormat
在 pom.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 -PdistAsDir
或 mvn clean package -PdistAsZip
我是 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 并在目标中创建另一个文件夹 [= =13=]
<format>dir</format>
然后它将在 target 下创建一个名为 service 的文件夹,并将包含所有列出的文件。我想要一种将目录名称自定义为 "deploy" 的方法。我尝试查看文档但找不到任何有用的信息,除非我创建另一个描述符,这不是正确的方法,因为我的新描述符将具有与前一个相同的配置,格式仅为 "dir".
如有任何帮助,我们将不胜感激。
您可以通过使用不同的 maven profiles 来实现您的要求。在
在您的程序集描述符中,您使用 属性 而不是固定字符串:
<formats>
<format>${distributionFormat}</format>
</formats>
distributionFormat
在 pom.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 -PdistAsDir
或 mvn clean package -PdistAsZip