maven - 如何构建具有依赖项的 uberjar

2024-06-24

我有一个生成 jar 文件的 Maven 模块。我被要求开发几个其他 uberjar 文件 作为构建过程的副产品。我还被告知这 2 个 jar 文件是小程序 jar 文件 需要包含 Maven 模块依赖项中的一些类。

我环顾四周,缩小到这 3 个选项 -

  1. Maven 组装插件 http://maven.apache.org/plugins/maven-assembly-plugin/- 这可以从 Maven 模块生成的类构建自定义 jar。不能包含第三方依赖项。
  2. 通过 Maven 使用 ant - 使用maven 依赖插件 http://maven.apache.org/plugins/maven-dependency-plugin/解压依赖项,然后通过 ant 脚本打包 applet jar。
  3. Use Maven 阴影插件 http://maven.apache.org/plugins/maven-shade-plugin/- 虽然这个插件不能直接满足我的要求,但我可以让它工作。

虽然我可以使用 (b) 和 (c) 来完成工作,但我无法决定使用哪一个。我注意到的一件关键事情是使用依赖插件非常耗时。

我想知道人们是否还有其他方法可以实现相同的要求。


您可以使用程序集插件包含依赖项dependencySet元素,参见:

  • http://maven.apache.org/plugins/maven- assembly-plugin/ assembly.html#class_dependencySet http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_dependencySet

具体来说,这是一个来自安德鲁·E·布鲁诺的博客 http://left.subtree.org/2008/01/24/creating-executable-jars-with-maven/:

<dependencySets>
  <dependencySet>
    <outputDirectory></outputDirectory>
    <outputFileNameMapping></outputFileNameMapping>
    <unpack>true</unpack>
    <scope>runtime</scope>
    <includes>
      <include>commons-lang:commons-lang</include>
      <include>commons-cli:commons-cli</include>
    </includes>
  </dependencySet>
</dependencySets>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven - 如何构建具有依赖项的 uberjar 的相关文章

随机推荐

  • 验证 Instagram 时不会重定向到回调 URL

    我的 Instagram 服务器端登录流程遇到问题 我在用 passport js passport instagram 在我的 Node js 服务器的域中example com 一个简单的WebView在我的安卓客户端中 问题是有时输入
  • 如何使用 Gradle API 获取 Android Studio 主 SourceSet?

    我正在为 Android Studio 开发一个 gradle 插件 这是我的问题如何使用 Gradle API 获取 Android Studio 主 SourceSet 我想用 java 源目录做一些复制工作 在问这个问题之前 我发现了
  • iTunes Connect 提交审核 - 无法保存您的应用程序信息。再试一次

    当我尝试提交应用程序的新版本以供审核时 我收到此错误消息 虽然我已经看到有关此错误消息的其他线程 但所提供的解决方案对我不起作用 而且我还没有看到任何提及我收到的实际服务器错误消息 iTunes Connect 响应以下错误消息 Error
  • 我如何知道在 python 中使用 OpenCV 检测到的白色区域的位置?

    例如 在这段代码中 我过滤了视频源以显示白色区域 我如何知道他们的位置 坐标 x y import cv2 import numpy as np cap cv2 VideoCapture 0 while 1 frame cap read h
  • 如何根据特定行中的值对 numpy 数组进行排序?

    我想知道如何根据其中一列中的值对整个数组进行排序 I have array 5 2 8 2 4 and array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  • 如何简洁地写一个 || b 其中 a 和 b 是可选值?

    我对任何语言的答案都很满意 但我最终想要 Java 的答案 Java 8 没问题 不限于 Java 8 我尝试修复标签 如果我有两个Optional
  • 使用 HTTP 访问数据库对象

    是否可以使用 HTTP 访问数据库对象SQL Server 2012它的完成方式是使用SQL Server 2000 我提到了下面的文章 但它是关于SQL Server 2000 使用 HTTP 访问数据库对象 http technet m
  • Python:如何模拟kafka主题进行单元测试?

    我们有一个消息调度程序 它会根据消息属性生成一个哈希键 然后将其与该键一起放入 Kafka 主题队列中 这样做是为了重复数据删除的目的 但是 我不确定如何在不实际设置本地集群并检查其是否按预期执行的情况下测试此重复数据删除 在线搜索用于模拟
  • 从 AWS CLI 工具获取 AWS 帐号的快速方法?

    寻找一种快速获取我的帐号的方法 我最初想到使用aws iam get account authorization details max items 1但这样做有几个问题 有没有办法做到这一点 可能不会跨帐户来源 您可以从以下位置获取帐号安
  • IE 和 Socket.io 兼容性

    我做了一些聊天示例 如下所示 http psismike com 2011 09 node js and socket io chat tutorial http psitsmike com 2011 09 node js and sock
  • 如果我的 php 不符合条件,如何使它不将表单数据发送到 mysql?

    我试图让我的网站在表单字段为空时显示错误消息 如果有 我想我确实这样做了 但它不会输出任何错误消息 它只是将空行添加到我的数据库列中 我应该补充一点 这是一种混合和匹配 我确实为此付出了努力 但我没有从头开始或任何东西 无论如何 我们非常感
  • 调用 [locationManager requestWhenInUseAuthorization] 时,警报视图会自行消失;

    我正在打电话 locationManager requestWhenInUseAuthorization 在显示MKMapView showsUserLocation YES 首先这看起来很奇怪 苹果应该处理这个问题MKMapView自动
  • 电影剪辑结束的 Flash 事件侦听器?

    任何人都可以建议影片剪辑动画结束时触发功能的最佳方式吗 我认为事件监听器可以处理这个问题 但不确定最好的方法 谢谢 保罗 有几种方法可以解决这个问题 只需从动画的最后一帧调用该函数即可 在函数的最后一帧上调度一个事件并在其他地方监听它 长而
  • C# API 返回字符串而不是 XML 包装的字符串

    我正在使用 ApiController 但无法调用返回 XML 以外的任何内容 public class GuideController ApiController AcceptVerbs GET HttpGet public string
  • 对齐类型并按值传递参数

    按值传递对齐类型或具有对齐类型的结构不适用于某些实现 这会破坏 STL 容器 因为某些方法 例如 resize 按值获取参数 我使用 Visual Studio 2008 运行了一些测试 但不完全确定按值传递何时以及如何失败 我主要关心的是
  • WPF 通过宽高比调整 UserControl 的大小

    我有一个 UserControl 并且该 UserControl 必须根据宽高比调整大小 这意味着 宽度 高度 2 1 目前我正在使用这段代码 protected override Size ArrangeOverride Size arr
  • 将方法定为最终方法的推理

    抱歉 这里有一个简单的问题 刚刚在我的笔记中发现了一些我不明白的与使方法最终相关的内容 我的笔记声称您应该将方法定为最终方法 原因如下 使得强制不变量变得不可能 字符串应该表现为字符串 我不太明白这是什么意思 有人可以帮我分解一下吗 多谢
  • PHP 7.2 - 当函数体位于字符串中时如何动态创建匿名函数

    当字符串中有函数体时 如何动态创建匿名函数 For e g user John Doe body echo Hello user myFunct function user body How do I have function body
  • 从帮助菜单中删除(或自定义)“搜索”

    我的应用程序有默认的 帮助 菜单 我删除了 帮助 条目 并添加了一个链接到我网站上的论坛的支持条目 帮助菜单笔尖如下所示 但是一旦我启动并运行应用程序 就会出现一个新的菜单项 我怎样才能让搜索消失 或者更好的是 我怎样才能让它启动一个带有参
  • maven - 如何构建具有依赖项的 uberjar

    我有一个生成 jar 文件的 Maven 模块 我被要求开发几个其他 uberjar 文件 作为构建过程的副产品 我还被告知这 2 个 jar 文件是小程序 jar 文件 需要包含 Maven 模块依赖项中的一些类 我环顾四周 缩小到这 3