栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以创建一个“uber”jar,其中包含项目类和项目依赖项(作为jar)以及自定义清单文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以创建一个“uber”jar,其中包含项目类和项目依赖项(作为jar)以及自定义清单文件?

实际上,我没有检查它到底在

maven-shade-plugin
做什么(或任何其他插件),因为maven 2具有内置的所有功能来创建
megaja
r或
uberjar
。你只需要使用带有预定义
jar-with-dependencies
描述符的
maven-assembly-plugin
即可。

只需将此代码段添加到你

pom.xml
的自定义清单中即可:

<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-assembly-plugin</artifactId>  <configuration>    <archive>      <manifest>        <mainClass>my.package.to.my.MainClass</mainClass>      </manifest>    </archive>  </configuration></plugin>

然后以下命令将生成你的

uberjar

mvn assembly:assembly -DdescriptorId=jar-with-dependencies

但是,同样,此描述符的默认行为是解压缩依赖项(例如maven-shade-plugin)。老实说,我不明白为什么会出现这个问题,但是,如果这不是你想要的,那么你可以使用自己的自定义程序集描述符。

为此,首先,创建

src/assembly/uberjar.xm
l具有以下内容的程序集描述符:

<assembly>  <id>uberjar</id>  <formats>    <format>jar</format>  </formats>  <includebaseDirectory>false</includebaseDirectory>  <dependencySets>    <dependencySet>      <unpack>false</unpack>      <scope>runtime</scope>      <useProjectArtifact>false</useProjectArtifact>    </dependencySet>  </dependencySets>  <fileSets>    <fileSet>      <directory>${project.build.outputDirectory}</directory>      <outputDirectory>/</outputDirectory>    </fileSet>  </fileSets></assembly>

然后,配置maven-assembly-plugin以使用此描述符,并将依赖Class-Path项添加到清单的条目中:

<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-assembly-plugin</artifactId>  <configuration>    <descriptors>       <descriptor>src/assembly/uberjar.xml</descriptor>    </descriptors>    <archive>      <manifest>        <mainClass>my.package.to.my.MainClass</mainClass>        <addClasspath>true</addClasspath>      </manifest>    </archive>  </configuration>  <!--  <executions>    <execution>      <phase>package</phase>      <goals>        <goal>single</goal>      </goals>    </execution>  </executions>  --></plugin>

最终运行mvn assembly:assembly以生成你的uberjar。

(可选)取消注释executions元素以在package阶段上绑定程序集插件(并使程序集作为常规构建的一部分生成)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400411.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号