如何使用 Gradle 在 JAR 中包含单个依赖项?

2024-02-04

我从 Gradle 开始,想知道如何将单个依赖项(在我的例子中为 TeamSpeak API)包含到我的 JAR 中,以便它在运行时可用。

这是我的 build.gradle 的一部分:

apply plugin: 'java'

compileJava {
    sourceCompatibility = '1.8'
    options.encoding = 'UTF-8'
}

jar {
    manifest {
        attributes 'Class-Path': '.......'
    }

    from {
        * What should I put here ? *
    }
}

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '4.3.7.Final'
    compile group: 'org.spigotmc', name: 'spigot', version: '1.8-R0.1-RELEASE'
    // Many other dependencies, all available at runtime...

    // This one isn't. So I need to include it into my JAR :
    compile group: 'com.github.theholywaffle', name: 'teamspeak3-api', version: '+'

}

感谢您的帮助 :)


最简单的方法是从要包含的依赖项的单独配置开始。我知道您只询问了一个 jar,但如果您向新配置添加更多依赖项,则此解决方案将起作用。 Maven 对这种东西有一个众所周知的名字:provided,这就是我们将要使用的。

   configurations {
      provided
      // Make compile extend from our provided configuration so that things added to bundled end up on the compile classpath
      compile.extendsFrom(provided)
   }

   dependencies {
      provided group: 'org.spigotmc', name: 'spigot', version: '1.8-R0.1-RELEASE'
   }

   jar {
       // Include all of the jars from the bundled configuration in our jar
       from configurations.provided.asFileTree.files.collect { zipTree(it) }
   }

Using provided因为配置的名称也很重要,因为当发布 jar 时,您在provided配置将显示为provided在与 JAR 一起发布的 POM.xml 中。 Maven 依赖解析器不会下拉providedjar 的依赖项和用户不会在类路径上出现类的重复副本。看Maven 依赖范围 https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Gradle 在 JAR 中包含单个依赖项? 的相关文章

随机推荐

  • “系列对象是可变的,无法进行散列”错误

    我正在尝试让以下脚本正常工作 输入文件由 3 列组成 基因关联类型 基因名称和疾病名称 cols Gene type Gene name Disorder name no headers pd read csv orphanet infon
  • Rspec - 将输出格式化为进度/文档/HTML

    使用 Rspec 我希望能够看到标准进度条 and输出到包含生成的文档格式规格表的文件 and还生成了一个 html 文件 无需多次运行测试 如何分配多种格式以及这些格式的文件目标 我想出了如何做到这一点 您可以将以下内容添加到您的 rsp
  • Crosswalk WebView 中启用了 Chrome 的流量节省功能吗?

    在 Chrome 版本 45 0 2454 85 中 开发人员工具在窗口顶部显示黄色警告 并显示文本 考虑禁用Chrome 数据保护程序 https support google com chrome answer 2392284 hl e
  • 在 OSX 上安装了 GNU grep,但无法使用

    我尝试在 OSX 上安装 GNU grep 它似乎已安装 但我无法使用它 我已经使用自制程序完成了此操作 Macports 目前遇到了一些问题 所以我无法使用它 安装 brew tap homebrew dupes brew install
  • tomcat-dbcp 与 commons-dbcp

    这两个连接池库之间似乎存在很多混淆 我想知道哪一个更好 如果有的话 以下是我想提出的一些要点 有人可以验证吗 Tomcat DBCP 使用默认的 tomcat dbcp jar 该jar 将出现在 tomcat lib 目录中 你do no
  • 如何重新启动我自己的qt应用程序?

    我只是问自己如何重新启动我自己的qt应用程序 有人可以给我举个例子吗 要重新启动应用程序 请尝试 include
  • Matplotlib Savefig 不会覆盖旧文件

    这看起来一定是我的机器上的权限问题 在 Windows 10 上进行系统更新后 当我运行 import matplotlib pyplot as plt make figure plt plot 1 2 3 4 plt ylabel som
  • python 处理无尽的 XML

    我正在开发一个应用程序 我的工作只是为该应用程序开发一个示例 Python 接口 应用程序可以提供基于XML的文档 我可以通过HTTP Get方法获取文档 但问题是基于XML的文档是无限的 这意味着不会有结束元素 我知道文件应该由SAX来处
  • 在 JSX 中拥有变量属性的最佳方式是什么?

    希望我的问题很清楚 我主要是在寻找一种将属性动态附加到 JSX 输入的方法
  • Python 人们使用哪个路径模块或类来代替 os.path?

    只是想知道有多少人在 Python 中使用路径模块 例如 Jason Orendorff 的路径模块 而不是使用os path用于连接和分割路径 您是否使用过 Jason 的路径模块 http wiki python org moin Pa
  • 决策树中特定类的 Sklearn 决策规则

    我正在创建决策树 我的数据属于以下类型 X1 X2 X3 X50 Y 1 5 7 0 1 1 5 34 81 0 1 4 21 21 1 0 65 34 23 1 1 我正在尝试执行以下代码 X train data iloc 0 51 Y
  • 无服务器框架中的共享 Lambda 授权方设置

    我正在尝试创建一个自定义 Lambda 授权方 该授权方将在几个不同的服务 无服务器堆栈之间共享 如果我理解这里的文档https serverless com framework docs providers aws events apig
  • 如何将 Excel 中的日期转换为 ISO 8601 格式

    我试图将日期格式保存为 YYYY MM DD 例如 2014 09 01 作为 CSV 文件 但当我这样做时 格式会恢复为 M D YYYY 格式 我尝试在 Excel 中将日期转换为字符串 但每次打开 CSV 文件时 它都会恢复为 M D
  • zip(*[iter(s)]*n) 在 Python 中如何工作?

    s 1 2 3 4 5 6 7 8 9 n 3 list zip iter s n returns 1 2 3 4 5 6 7 8 9 如何zip iter s n 工作 如果用更冗长的代码编写它会是什么样子 This is a techn
  • 是否有可以通过示例创建 XSLT 的 XSL 代码生成器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 给定一个源 XML 文档以及转换后的示例 是否有一个代码生成器可以创建 XSL 转换来完成该转换 我并不
  • async/await 和访问者模式[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我们最近将对象树状结构 大约 40 层深 的访问者之一转换为 async await 模式 因为最里面的接受方法现在执行
  • 如何同时运行两个 python 循环?

    假设我在Python中有以下内容 A loop for i in range 10000 Do Task A B loop for i in range 10000 Do Task B 如何在 Python 中同时运行这些循环 如果你想要并
  • RU/m 去哪儿了?

    这曾经是 CosmosDb 的一项功能 用于提供每分钟请求单位 以及每秒请求单位 但是该选项似乎已从门户中消失 并且所有在线文档均已删除 谢谢 奥利弗 RU m 已死 刚刚收到微软的回复 我们收到了参与预览计划的客户的大量反馈 从 2017
  • 系统中 1 字节!= 8 位? [复制]

    这个问题在这里已经有答案了 我一直读这样的句子 不要依赖 1 个字节就是 8 位大小 use CHAR BIT而不是 8 作为常量在位和字节之间转换 et cetera What real life systems are there to
  • 如何使用 Gradle 在 JAR 中包含单个依赖项?

    我从 Gradle 开始 想知道如何将单个依赖项 在我的例子中为 TeamSpeak API 包含到我的 JAR 中 以便它在运行时可用 这是我的 build gradle 的一部分 apply plugin java compileJav