在 gradle.build 中使用 fatjar 插件时如何指定主类

2024-01-11

我有兴趣在单个可执行 jar 文件中构建一个包含所有模块依赖项和外部 jar 的单个 jar,我将能够使用该文件运行java -jar myApp.jar.

我有模块 A,它依赖于模块 B。 目前我正在使用 gradle,我的build.gradle脚本看起来像这样:

    apply plugin: 'fatjar'
    description = "A_Project"
    dependencies {
      compile project(':B_Project')
      compile "com.someExternalDependency::3.0"
    }

当我通过 gradle 命令构建它时:clean build fatjar按预期创建了一个胖罐子“A.jar”。 但是按照我上面写的那样运行它会导致:no main manifest attribute, in A.jar我该如何修改我的build.gradle文件并指定主类或清单?


我自己已经弄清楚了: 我使用过 uberjar Gradle 任务。 现在我的 build.gradle 文件如下所示:

apply plugin: 'java'
apply plugin: 'application'

mainClassName  = 'com.organization.project.package.mainClassName'

version = '1.0'

task uberjar(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from {configurations.compile.collect {zipTree(it)}} {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
}

manifest {
    attributes 'Main-Class': 'com.organization.project.package.mainClassName'
    }
}


dependencies {
compile project(':B_Project')
compile "com.someExternalDependency::3.0"
}

现在我将它与命令一起使用:

干净构建 uberjar

它构建了一个漂亮的可运行 jar :)

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

在 gradle.build 中使用 fatjar 插件时如何指定主类 的相关文章

  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • 带有 wsdl2java 插件的 gradle

    我正在使用 no nils wsdl2java 插件 完整的 gradle build 文件如下所示 plugins id org springframework boot version 2 3 4 RELEASE id io sprin
  • Sonarqube如何正确配置gradle子项目?

    我的 gradle 项目结构如下所示 geode core geode lucene extensions geode modules extensions geode modules session For extensions因此 子项
  • NotificationCompat.Builder 不接受第二个参数

    由于某种原因我的NotificationCompat Builder不会接受第二个参数 我不知道如何解决它 我看到了一些其他答案 但主要问题出在 gradle 版本中 但我的答案是最新的 如下所示 if Build VERSION SDK
  • 源单元“_BuildScript_”中“语义分析”阶段出现异常

    评估根项目 android 时出现问题 配置项目 app 时出现问题 无法打开构建文件 C Users InFED Laptop Documents GitHub sustain and save android app build gra
  • 将 JAR 文件打包为 WAR 文件

    我有一系列依赖的Java项目 我想将它们打包成一个 JAR 文件 以便在我的 WAR 文件中使用 这些项目依赖于大量的外部库和项目 如log4j apache commons等 我选择 Eclipse 中的所有项目并导出为 JAR 文件 然
  • 找不到 io.confluence:kafka-protobuf-serializer:6.0.0

    直接的问题是 为什么 Gradle 没有解决我添加的这个依赖关系 dependencies kafka protobuf serializer implementation io confluent kafka protobuf seria
  • 无需测试即可构建 Gradle

    我想执行gradle build不执行单元测试 我试过 gradle Dskip tests build 这似乎没有什么作用 我还可以使用其他命令吗 您应该使用 x排除任何任务的命令行参数 Try gradle build x test U
  • 如何在gradle中复制文件?

    我正在尝试将战争档案部署到 Tomcat 中 这是我编写的构建脚本 apply plugin war task deploy dependsOn war copy from build libs into E apache tomcat 8
  • Java Sqlite Gradle

    我对 gradle 和 java 还很陌生 我有一个使用 sqlite 的项目 它通过 intellij idea 运行良好 但我无法从终端运行它 它会抛出异常 java lang ClassNotFoundException org sq
  • 通过 PowerShell 对 TFS 构建进行排队

    TFS2012 具有一个 2010 构建控制器和一个 2010 构建代理 还有一个 2012 构建控制器和多个 2012 构建代理 我们的软件有多个版本的多个版本 构建根据约定命名 例如Foo version 1 0 和 Foo versi
  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 如何将任务添加到 gradle 中的主要“构建”任务

    当我尝试使用以下代码将任务添加到主构建任务时 rootProject tasks getByName build dependsOn mytask 当我跑步时它抱怨gradle w build输出 Where Build file line
  • 如何向 SvelteKit/Vite 应用添加版本号?

    我正在尝试在我的 SvelteKit 应用程序中创建一个系统 它会在某个页面上向您显示有关当前应用程序版本的信息 最好是 Git 提交哈希和描述 我尝试使用Vite的定义功能 https vitejs dev config define在构
  • 使用 Maven 配置文件进行工件版本控制

    我希望项目的版本号采用以下格式进行正常发布版本控制
  • 使用 VNext 构建后,TFS tbl_Content 开始快速增长

    直到一个月前我们一直在使用旧样式 XAML 构建 然后开始使用 vNext 构建 之后我注意到 TFS 数据库中的 tbl Content 表开始快速增长 例如 在过去 8 小时内 它增长了 10 GB 但我不明白为什么会这样做 有谁知道它
  • 使用 gradle 部署 GAE 时出现奇怪的构建失败

    直到今天一切都运转良好 据我所知 没有改变任何东西 现在我明白了 C mypath gt gradle appengineDeploy gt Configure project WARNING You are a using release
  • 什么是“制定目标”?

    为什么我需要制作一个make target在能够构建我的源代码之前 更具体地说 什么是制定目标 http publib boulder ibm com infocenter rsdvhelp v6r0m1 index jsp topic o
  • 升级到最新支持库后Android JACK编译器错误

    Android Studio 2 2 3 Windows 10 64位 构建工具版本 25 Android Gradle插件版本2 2 3 升级到最新的支持库 从 23 4 0 到 25 1 0 并更改编译版本 从 23 到 25 后 我收
  • 颠覆和混合修订:破坏构建的秘诀?

    在使用 TFS 一段时间后 我刚刚回到 subversion 一般来说我已经很退出了 有一件事情我记得不一样 我不记得能够从过时的工作副本中提交 或者也许我的记忆力让我无法理解 过时 的定义 我认为 过时 意味着自从我上次更新工作副本以来

随机推荐

  • 强化学习求解TSP(二):Qlearning求解旅行商问题TSP(提供Python代码)

    一 Qlearning简介 Q learning是一种强化学习算法 用于解决基于奖励的决策问题 它是一种无模型的学习方法 通过与环境的交互来学习最优策略 Q learning的核心思想是通过学习一个Q值函数来指导决策 该函数表示在给定状态下
  • 线性代数在数据挖掘中的应用

    1 背景介绍 线性代数是数学的一个分支 主要研究的是线性方程组和向量的相关概念和方法 在数据挖掘领域 线性代数的应用非常广泛 包括数据处理 特征提取 模型训练等方面 本文将从以下几个方面进行阐述 背景介绍 核心概念与联系 核心算法原理和具体
  • 6 - 数据备份与恢复|innobackupex

    数据备份与恢复 innobackupex 数据备份与恢复 数据备份相关概念 物理备份与恢复 逻辑备份 推荐 使用binlog日志文件实现对数据的时时备份 使用日志 恢复数据
  • 心灵与大脑的沟通:如何让大脑更好地理解我们的情感

    1 背景介绍 心理学和人工智能之间的界限已经不断模糊化 尤其是在情感智能方面 情感智能是一种新兴的人工智能技术 旨在让计算机更好地理解和回应人类的情感 这篇文章将探讨如何让大脑更好地理解我们的情感 以及在这个过程中涉及的核心概念 算法原理
  • AI大模型应用入门实战与进阶:Part 7 Transformer模型解析

    1 背景介绍 自从2020年的大模型如GPT 3等开始引起广泛关注 人工智能领域的研究和应用得到了重大推动 在这一波技术创新中 Transformer模型发挥着关键作用 这篇文章将深入探讨Transformer模型的核心概念 算法原理和实例
  • 强化学习求解TSP(一):Qlearning求解旅行商问题TSP(提供Python代码)

    一 Qlearning简介 Q learning是一种强化学习算法 用于解决基于奖励的决策问题 它是一种无模型的学习方法 通过与环境的交互来学习最优策略 Q learning的核心思想是通过学习一个Q值函数来指导决策 该函数表示在给定状态下
  • 如何成为一名数据科学家:必须掌握的技能和知识

    1 背景介绍 数据科学家是一种新兴的职业 它结合了计算机科学 统计学 数学和领域知识等多个领域的知识和技能 以解决实际问题 数据科学家的主要任务是收集 清洗 分析和解释大量数据 从中挖掘有价值的信息和知识 并将其应用于决策和预测 数据科学家
  • 机器智能与人类智能的竞争:技术创新的驱动力

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是最近几年最热门的技术领域之一 随着数据量的增加和计算能力的提高 机器学习技术的发展得到了极大的推动 机器学习
  • 电脑快速打开计算器的方法

    大家好 我是爱你三千遍斯塔克 我们平常在运算时 经常要要使用计算器 那么计算器有什么快速打开方法吗 这里有一些参考方法 可供大家进行参考 希望对大家有帮助 希望你喜欢我的内容 记得关注我哦 我会继续为大家带来更好的作 1 win R 打开运
  • 机器学习中的知识共享:模型与数据的交流与协作

    1 背景介绍 机器学习 Machine Learning 是一种通过数据学习模式和规律的计算机科学领域 在过去的几年里 机器学习技术在各个领域得到了广泛应用 如图像识别 自然语言处理 推荐系统等 随着数据规模的不断增长 单个机器学习模型的复
  • 人工智能与机器学习:未来的编程范式

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是现代计算机科学的重要领域之一 它们旨在让计算机能够自主地学习 理解和进化 以解决复杂的问题 随着数据量的增加
  • JDK21和 Flowable 7.0.0

    JDK21和 Flowable 7 0 0 一 Flowable 二 项目搭建 1 依赖包 2 数据库 3 资源文件 1 YML配置文件 2 Drools kbase
  • 序列模型(4)—— Scaling Laws

    本文介绍 LLM 训练过程中重要的 Scaling Laws 这是一个 经验规律 指出了 固定训练成本 总计算量FLOPs C C C 时 如何调配模型规模 参数量 N N
  • golang中有没有一种有效的方法来计算执行时间?

    我正在寻找计算 go 执行时间的最佳方法 func main start time Now time Sleep time Second 2 something doing here elapsed time Since start fmt
  • PHP 正则表达式:找不到结束分隔符“^”

    我在使用正则表达式时遇到了一些麻烦 这是我的代码 pattern 0 9 if preg match pattern input echo yes else echo nope 我运行它并得到 警告 preg match function
  • 正则表达式检查 Facebook 视频 URL

    我尝试使用正则表达式检查 Facebook 视频网址 这是有效的 Facebook 视频 URL 示例 https www facebook com video php v 100000000000000 https www faceboo
  • Spark中高效计算top-k元素

    我有一个类似于以下内容的数据框 key thing value u1 foo 1 u1 foo 2 u1 bar 10 u2 foo 10 u2 foo 2 u2 bar 10 并希望得到以下结果 key thing sum value r
  • Chrome 版本 44 在 selenium 测试中存在一些问题

    我正在使用 Selenium 和 Chrome 编写一个测试 昨天当我的 Chrome 从 43 更新到 44 时 我的测试遇到了一些关于 action sendkey arrow down 等的问题 我尝试卸载 Chrome 并安装 Ch
  • MySQL:一位的最小数据类型

    我想在表中添加一列 其中包含两个值 1 或 0 MySQL 中存储数据的最小数据类型是什么 A TINYINT 1 可以包含之间的数字 127 to 127 您可以使用位 1 http dev mysql com doc refman 5
  • 在 gradle.build 中使用 fatjar 插件时如何指定主类

    我有兴趣在单个可执行 jar 文件中构建一个包含所有模块依赖项和外部 jar 的单个 jar 我将能够使用该文件运行java jar myApp jar 我有模块 A 它依赖于模块 B 目前我正在使用 gradle 我的build grad