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打包相关推荐

  1. maven打包之胖包与瘦包

    IDEA的Maven打包步骤 胖包和瘦包的区别: 胖包:将maven项目中的依赖包和项目打为一个包 瘦包:直接打包,不打包依赖包,仅打包出项目中的代码到JAR包中. maven打胖包 胖包的意识就是可 ...

  2. SparkStreaming之Offset管理、胖包和瘦包提交

    1.Offset管理 Kafka从0.10.x开始Offset偏移量就自从维护在Kafka内部中,看下面代码. 注意,我们使用的是earliest从头开始消费,也就是说如果你的SparkStreami ...

  3. IDEA中如何正确快速打jar包(包括瘦包、胖包)

    第一种普通java工程下: 1.打开idea 如图所示:点击箭头所指的位置: 2.选择你自己要打包的available element 后 如图所示 逐步点击即可 进入如下页面 点击ok 打包完成 来 ...

  4. maven-compiler-plugin如何快速打胖包和瘦包

    maven打jar包 胖瘦包区别 简单手动打胖瘦包 无依赖瘦包 胖包 修改配置文件快速打胖瘦包 胖瘦包区别 胖包和瘦包有一定的区别,胖包是连同写的项目和其所依赖的包全部打包,方便在任何环境下运行,瘦包 ...

  5. Maven中打胖包和瘦包

    1.把如下代码复制到porm.xml中的path,如下 <build><!--jar包的首名称--><finalName>myduaf</finalName& ...

  6. Maven中的打胖包瘦包

    maven工程中的胖包与瘦包的区别在于:一.文件大小,胖包往往是瘦包的很多很多倍:二.胖包中自带依赖,瘦包中没有,所以胖包到哪里都能用,而要使用瘦包必须引用的工程中自带依赖才行 第一步:在maven的 ...

  7. 如何快速打胖包和瘦包

    目录 1.胖瘦包区别 2.简单手动打胖瘦包 2.1 无依赖瘦包 2.2 胖包 3.修改配置文件快速打胖瘦包 1.胖瘦包区别 胖包和瘦包有一定的区别,胖包是连同写的项目和其所依赖的包全部打包,方便在任何 ...

  8. idea同时打胖包和瘦包的方法

    在pom包中改写build可实现同时打胖包和瘦包. 代码如下: <build><plugins><plugin><artifactId>maven-co ...

  9. ideal 快速打包(胖包+瘦包)

    当需要重复多次打包的时候,传统的打 胖包 方法就显得比较麻烦,因为需要多步操作 以下是我找到的一种十分方便的打包方式,大家可以参考一下: 仅需更改pom文件中的 build 的标签内容,然后再常规打包 ...

最新文章

  1. AI口语翻译,遇到的可不止口齿不清…….
  2. NVIDIA Jetson Xavier NX设备上使用jtop监控GPU、CPU、内存等的使用
  3. Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
  4. Janus流媒体服务器信令分析
  5. .NET Core开发实战(第13课:配置绑定:使用强类型对象承载配置数据)--学习笔记...
  6. FileUpload之单个文件上传
  7. 蔡高厅老师 - 高等数学阅读笔记 - 06 - 高阶导数 隐函数- 02 (28、29、30、31)
  8. Python项目实践:绘制玫瑰花
  9. pandas显示不全问题
  10. 新人开车——访问控制
  11. Word如何快速绘制你需要的作文稿纸
  12. 网易博客 android,android编译环境
  13. 浅谈数字证书安装证书原理
  14. 01改变世界:没有计算器的日子怎么过——手动时期的计算工具
  15. Taro小程序分享功能
  16. 浅谈JavaScript面向对象编程(转自酷勤网)
  17. build-up to Ajax v,to build up是什么意思
  18. Idea 去掉 mapper.xml 文件的黄色、淡绿色警告(Windows、Mac)
  19. 横幅(banner)设计的成功技术
  20. 天嵌科技携手爱板网推出年终活动

热门文章

  1. connectex: No connection could be made because the target machine actively refused it.
  2. github page建立动态网站
  3. LeetCode力扣刷题——居合斩!二分查找
  4. 计算机专业简历的自我介绍,计算机专业简历自我介绍范文 .docx
  5. 用echarts做双y轴折线图柱状图混合实时更新图
  6. Android平台抓包工具TCPDump
  7. NOIP备战题解集(11.10)
  8. Android之主题皮肤实现
  9. 每日N+1题 -- 算法练习 Day9
  10. 移动桌面位置,再也不怕C盘爆满!