Gradle原理与瘦包胖包的Jar打包
1. Gradle原理
Gradle是用Java编写的,编写脚本用的是groovy。
maven 构建本质启动了JVM进程,但是JVM的启动和加载是很慢的。构造完成后会进行销毁。
gradle3.0使用daemon模式,每次新的请求都会开启一个
轻量的client JVM,只负责连接查找并和后台的daemon JVM通信,client JVM任务完成就会销毁,deamon JVM也会做些Jar的缓存,这样就避免了maven JVM的启动和加载慢的问题
daemon是默认开启的,client和daemon不兼容的情况(版本,内存大小),会新开一个daemon。daemon空闲3个小时会自动退出。可以使用 --no-daemon设置不用daemon ,这样就跟maven一致了
2. Groovy
运行在JVM上的强类型,动态调用的语言
动态调用就是利用反射机制来调用。可以用@ComplieStatic 像Java一样先静态编译后调用
3. Gradle构建生命周期
- 初始化 Initialization:读取 settings.gradle,决定单项目还是多项目的工程,哪些项目要参与构建,并为每个项目生成Project对象
- 配置 Configuration:不运行构建,对构建进行配置,如下,定义一个任务的时候configuration阶段只输出了hello,没有输出doFirst,doLast。也就是configuration阶段把doFirst,doLast写入到hello任务的执行链中,执行的时候会运行
task hello {doFirst{println("doFirst")}println("hello")doLast{println("doLast")}
}> Configure project :
hello> Task :hello
doFirst
doLast
- Execution 执行:执行configuration阶段设置的任务
4. Gradle 打jar包
推荐的一个学习链接
apply plugin: ‘java’
插件是Gradle的扩展,它会通过某种方式配置我们的项目(譬如加入一些task),加入上面插件以后Gradle默认希望能在src/main/java路径下找到源代码,在 src/test/java路径下找到测试代码,任何src/main/resources路径的文件都会被包含在JAR文件里,任何src/test/resources路径的文件都会被加入到classpath中以运行测试代码,所有的输出文件将会被创建在构建目录里,JAR文件存放在 build/libs文件夹里。
4.1 依赖与代码一个jar
jar {from {configurations.runtime.collect{zipTree(it)}}manifest {attributes 'Main-Class': 'test.App'}
}
在Gradle中依赖可以组合成configurations(配置),一个配置简单地说就是一系列的依赖。下面我们给出几种Java插件中常见的配置,如下:
- compile:用来编译项目源代码的依赖
- runtime:在运行时被生成的类需要的依赖,默认项,包含编译时的依赖
- testCompile:编译测试代码依赖,默认项,包含生成的类运行所需的依赖和编译源代码的依赖
- testRuntime:运行测试所需要的依赖,默认项,包含上面三个依赖
it是groovy语法糖,如果传一个参数,这个参数可以不写,默认直接使用it
4.2 依赖与代码分开
task copyJar(type:Copy){from configurations.runtimeinto ('build/libs/lib')}
jar {dependsOn(copyJar)String jarLib = ''configurations.runtime.each {jarLib = jarLib + " lib\\"+it.name}manifest {attributes 'Main-Class': 'test.App'attributes 'Class-Path': jarLib}
}
Gradle原理与瘦包胖包的Jar打包相关推荐
- maven打包之胖包与瘦包
IDEA的Maven打包步骤 胖包和瘦包的区别: 胖包:将maven项目中的依赖包和项目打为一个包 瘦包:直接打包,不打包依赖包,仅打包出项目中的代码到JAR包中. maven打胖包 胖包的意识就是可 ...
- SparkStreaming之Offset管理、胖包和瘦包提交
1.Offset管理 Kafka从0.10.x开始Offset偏移量就自从维护在Kafka内部中,看下面代码. 注意,我们使用的是earliest从头开始消费,也就是说如果你的SparkStreami ...
- IDEA中如何正确快速打jar包(包括瘦包、胖包)
第一种普通java工程下: 1.打开idea 如图所示:点击箭头所指的位置: 2.选择你自己要打包的available element 后 如图所示 逐步点击即可 进入如下页面 点击ok 打包完成 来 ...
- maven-compiler-plugin如何快速打胖包和瘦包
maven打jar包 胖瘦包区别 简单手动打胖瘦包 无依赖瘦包 胖包 修改配置文件快速打胖瘦包 胖瘦包区别 胖包和瘦包有一定的区别,胖包是连同写的项目和其所依赖的包全部打包,方便在任何环境下运行,瘦包 ...
- Maven中打胖包和瘦包
1.把如下代码复制到porm.xml中的path,如下 <build><!--jar包的首名称--><finalName>myduaf</finalName& ...
- Maven中的打胖包瘦包
maven工程中的胖包与瘦包的区别在于:一.文件大小,胖包往往是瘦包的很多很多倍:二.胖包中自带依赖,瘦包中没有,所以胖包到哪里都能用,而要使用瘦包必须引用的工程中自带依赖才行 第一步:在maven的 ...
- 如何快速打胖包和瘦包
目录 1.胖瘦包区别 2.简单手动打胖瘦包 2.1 无依赖瘦包 2.2 胖包 3.修改配置文件快速打胖瘦包 1.胖瘦包区别 胖包和瘦包有一定的区别,胖包是连同写的项目和其所依赖的包全部打包,方便在任何 ...
- idea同时打胖包和瘦包的方法
在pom包中改写build可实现同时打胖包和瘦包. 代码如下: <build><plugins><plugin><artifactId>maven-co ...
- ideal 快速打包(胖包+瘦包)
当需要重复多次打包的时候,传统的打 胖包 方法就显得比较麻烦,因为需要多步操作 以下是我找到的一种十分方便的打包方式,大家可以参考一下: 仅需更改pom文件中的 build 的标签内容,然后再常规打包 ...
最新文章
- AI口语翻译,遇到的可不止口齿不清…….
- NVIDIA Jetson Xavier NX设备上使用jtop监控GPU、CPU、内存等的使用
- Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- Janus流媒体服务器信令分析
- .NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记...
- FileUpload之单个文件上传
- 蔡高厅老师 - 高等数学阅读笔记 - 06 - 高阶导数 隐函数- 02 (28、29、30、31)
- Python项目实践:绘制玫瑰花
- pandas显示不全问题
- 新人开车——访问控制
- Word如何快速绘制你需要的作文稿纸
- 网易博客 android,android编译环境
- 浅谈数字证书安装证书原理
- 01改变世界:没有计算器的日子怎么过——手动时期的计算工具
- Taro小程序分享功能
- 浅谈JavaScript面向对象编程(转自酷勤网)
- build-up to Ajax v,to build up是什么意思
- Idea 去掉 mapper.xml 文件的黄色、淡绿色警告(Windows、Mac)
- 横幅(banner)设计的成功技术
- 天嵌科技携手爱板网推出年终活动
热门文章
- connectex: No connection could be made because the target machine actively refused it.
- github page建立动态网站
- LeetCode力扣刷题——居合斩!二分查找
- 计算机专业简历的自我介绍,计算机专业简历自我介绍范文 .docx
- 用echarts做双y轴折线图柱状图混合实时更新图
- Android平台抓包工具TCPDump
- NOIP备战题解集(11.10)
- Android之主题皮肤实现
- 每日N+1题 -- 算法练习 Day9
- 移动桌面位置,再也不怕C盘爆满!