使用Gradle来打Jar包,在引入Gradle的java插件后,直接就能实现
在build.gradle文件中引入java插件
plugins { id 'java' }
然后配置maifest主类
jar { manifest { attributes "Main-Class": "cn.buddie.GradleTest" } }
最后执行jar任务就能打出来jar包了
gradle jar
但这样,打出来的Jar包中,只包含了自己编写的代码编译成的Class文件。其它依赖的Jar包中的类,不在其中。
解决方式有两种。
一种是引用application插件,通过distTar或distZip打包。这样生成的包里不仅包含了自己项目中写的源码编辑成的jar包,还包括gradle中配置依赖的jar包,同时还生成了shell和bat脚本,通过脚本,可以直接运行我们的程序。
另一种,是在打jar包,直接依赖的第三方类库中的类,一起打包到我们的jar中。
具体如下:
jar { manifestContentCharset 'utf-8' metadataCharset 'utf-8' manifest { attributes "Main-Class": "cn.buddie.GradleTest" } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }
这样打出来的jar包,可以使用java -jar的方式运行
java -jar myapp.jar
如果领导说,你即需要提供单个的jar,又需要提供tar包,怎么办呢?因为修改了task jar,而task distTar是依赖于task jar。这样的后果就是打出来的tar包中,已经包含了所有你依赖的第三方jar包,同时,你自己项目打出的jar包中,又包含了这些第三方jar包中的类。也就是所有第三方的类,都double了!
我这里最终成功的解决方案为:增加参数,让task jar根据参数来决定是否将第三方依赖类打入自己的jar包。
jar { manifestContentCharset 'utf-8' metadataCharset 'utf-8' manifest { attributes "Main-Class": "cn.buddie.GradleTest" } if (project.hasProperty("allInOne")) { from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } }
这里增加了一个“allInOne”的参数,如果不指定参数,就不会将第三方依赖类打入jar包。这样在执行task distTar时,不指定参数,打出来的tar中,第三方依赖类就只有一份。
而在需要所有类在一个Jar包中的Jar文件时,可以使用参数打包
gradle jar -PallInOne
这样不管领导要什么包,都可以在不做任何改动的情况下,满足领导的需求
相关推荐
我就去网上去寻找,aar/jar包生成包含第三方等问题.网上也有很多答案,我随便发一个别人的链接, https://blog.csdn.net/qq_20328181/article/details/84333750,都是差不多的. 在这时候我遇到问题.里面说合并jar包,我的...
Fatjar,又称为“胖Jar”,指的是将所有依赖库(包括第三方jar包)一起打包到单个JAR文件中的方法。这样做可以使得最终用户无需担心类路径配置问题,只需双击运行这个“胖”JAR即可。 在MyEclipse和Eclipse中,打包...
确保第三方jar包在构建路径中,才能在编译和运行时正确引用其类和方法。 3. **Eclipse与MyEclipse的类加载机制** - Eclipse和MyEclipse使用OSGi(Open Services Gateway Initiative)框架来管理插件和类加载。OSGi...
将生成的jar包添加到第三方项目的`libs`目录下,并在`build.gradle`文件中添加如下依赖: ```groovy dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) } ``` 同步项目后,就可以在第三方...
在Java开发过程中,引入第三方JAR包是常见的操作,它能帮助我们快速利用已有的库功能,节省开发时间和精力。本篇文章将详细讲解如何在Java项目中导入并使用第三方JAR包,以及与之相关的工具和实践技巧。 首先,我们...
`FatJar`是一个第三方插件,适用于`Eclipse`和`MyEclipse`,它的主要功能是帮助开发者将所有项目依赖的库文件(即第三方JAR包)打包进最终的可执行JAR中。这样,当用户运行这个单一的JAR文件时,不需要额外配置类...
先创建一个新的目录,如`dist`,然后把所有的类文件(不包括第三方库)和资源复制到这个目录。接着,执行以下命令: ``` jar cvfm JFinalDemo.jar MANIFEST.MF -C dist . ``` 这条命令会创建一个名为`JFinalDemo...
本话题涉及到的文件“jl-1.0.1.jar.zip”是一个包含名为“jl-1.0.1.jar”的Java库的压缩文件,这可能是一个由第三方开发者提供的组件或服务。 标题中提到了“jl-1.0.1.jar.zip_jl0.4.jar下载_jl1.0.1.jar_jl1.0.jar...
然而,Eclipse IDE默认的“Export”功能并不包含第三方库,这可能导致运行时缺少依赖的问题。为了解决这个问题,我们可以使用一个名为"fatjar"的插件。本文将详细介绍如何使用fatjar插件在Eclipse中导出包含所有依赖...
然而,Eclipse IDE在默认情况下,对于包含第三方库的项目打包时可能会遇到问题,因为它并不自动将这些依赖的库文件包含进生成的JAR中。针对这一问题,我们可以采用一种称为"fat jar"的打包方式来解决。 "Fat jar"...
除了通过 build.gradle 文件添加依赖外,我们还可以通过 jar 包引入第三方库。具体步骤如下: 1. 首先,下载需要的第三方 jar 包,例如 mysql-connector-java-5.1.49-bin.jar。 2. 将下载的 jar 包复制到 Project/...
在生成JAR文件之前,需要将项目依赖的第三方JAR包移动到指定的文件夹中,并配置路径。在Intellij Idea中,可以通过右键点击创建文件夹,然后将第三方的JAR包拖动进入此文件夹。 四、生成JAR文件 在配置完成后,...
在本项目中,开发者已经为您准备了一个包含热启动、jar 包打包、第三方 jar 包打包以及 SQL Server 驱动的完整配置,使您能够快速地进行开发工作。 1. **热启动**: Spring Boot 提供了热部署(Hot Deployment)...
在Java编程语言中,开发者经常会遇到需要依赖第三方库的情况,这些库通常以JAR(Java Archive)文件的形式存在。JAR文件是Java平台特有的归档格式,它将多个类文件和其他资源打包在一起,便于分发和使用。"java必须...
在Java开发过程中,我们经常会遇到需要使用到第三方库的情况,这些库通常以jar(Java Archive)包的形式存在。"第三方分享的jar包"这个主题主要涉及如何将这些外部库引入到我们的项目中以便使用它们的功能。下面将...
Android Studio 3.0 使用 Gradle 将模块打包 jar 文件的方法是 Android 应用程序开发中的一种常见需求。通过使用 Gradle,可以将模块打包成 jar 文件,以便于在其他项目中使用。本文将详细介绍如何使用 Gradle 将...
Android Studio使用Gradle作为构建工具,引入第三方库主要通过在`build.gradle`文件中添加依赖项。例如,要引入一个叫做`com.example:library:1.0.0`的库,你可以在app模块的`build.gradle`文件的`dependencies`块...
5. **其他依赖库**:如Guava、SLF4J、Protobuf等,它们是HBase运行所必需的第三方库。 在实际开发中,我们通常会将所有这些依赖的jar包打包到一个fat jar或者使用Maven或Gradle的依赖管理工具,这样可以确保所有...
在描述中提到的“springBoot 所有依赖的jar包”,是指Spring Boot项目中所需的全部外部库文件,这些jar包涵盖了Spring Boot框架本身、其依赖的Spring模块和其他第三方库。 Spring Boot 的核心特性包括: 1. **起步...
在Java开发中,"fat jar"(也称为"uber jar")是一种打包方式,它将所有依赖库(包括第三方库)合并到一个单独的JAR文件中,使得开发者可以轻松地分发和运行整个应用程序,而无需关心项目的依赖关系。在本教程中,...