gpt4 book ai didi

maven-2 - maven-assembly插件-如何创建嵌套程序集

转载 作者:行者123 更新时间:2023-12-03 09:21:30 24 4
gpt4 key购买 nike

我有一个项目,据此,我试图创建一个分发zip文件,该文件包含(以及其他文件)一个与我的Java项目相关的可执行jar。

所以我有点希望它看起来像这样:

-wiki-search-1.0.0-dist.zip
-wiki-search.bat
-wiki-search-help.html
-wiki-search-1.0.0-jar-with-dependencies.jar
-jar content...

我使用的是程序集插件和预定义的描述符“jar-with-dependencies”来创建我的可执行jar文件。

我在pom中指定了一个单独的程序集插件条目,引用了一个自定义描述符来尝试构建可分发的zip文件。

所以我的pom部分看起来像这样:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>quicksearch.QuickSearchApp</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
</plugin>

我的自定义描述符如下所示:
<assembly>
<id>dist</id>
<formats>
<format>tar.gz</format>
<format>tar.bz2</format>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<includes>
<include>${project.basedir}/target/wiki-search-0.0.1-SNAPSHOT-jar-with-dependencies.jar</include>
</includes>
<outputDirectory>.</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.basedir}/src/main/etc</directory>
<includes>
<include>*</include>
</includes>
<outputDirectory></outputDirectory>
</fileSet>
</fileSets>
</assembly>

一切正常。具有依赖关系的jar正在构建。我的dist zip文件正在构建中。但是dist zip文件不包含jar-with-dependencies文件。

最佳答案

使用您现有的配置,程序集插件的两个单独的配置将被合并,并且这些配置也将被合并。

为了实现您的目标,您应该定义具有多个嵌套执行的单个程序集插件配置,然后为其中的每个执行定义配置。然后,程序集插件将按顺序执行每个程序集,因此jar-with-dependencies jar将可用于包含在dist jar中。还要注意,不建议使用attached目标,而建议使用single目标。

还要注意,程序集中的路径是相对于根的,并且要包含特定文件,应使用<files>元素而不是<filesets>元素。您还可以在部件中指定属性,以使其更改时不那么脆弱。

下面重新排列的配置和组装应完成的工作:

程序集描述符:

<assembly>
<id>dist</id>
<formats>
<format>tar.gz</format>
<format>tar.bz2</format>
<format>zip</format>
</formats>
<files>
<file>
<source>
target/${project.artifactId}-${project.version}-jar-with-dependencies.jar
</source>
<outputDirectory>/</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/resources</directory>
<includes>
<include>*</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>

程序集插件:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>quicksearch.QuickSearchApp</mainClass>
</manifest>
</archive>
</configuration>
</execution>
<execution>
<id>dist</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>

关于maven-2 - maven-assembly插件-如何创建嵌套程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com