Gradle连载4-依赖包打包方式

一、apply方法的使用

apply&#xA0;<span class="hljs-string">plugin:</span><span class="hljs-string">'java'</span><br><br>apply&#xA0;<span class="hljs-string">plugin:</span>org.gradle.api.plugins.JavaPlugin<br><br>apply&#xA0;<span class="hljs-string">plugin:</span>JavaPlugin<br><br>apply&#xA0;<span class="hljs-string">from:</span><span class="hljs-string">'version.gradle'</span><br>task&#xA0;ex52PrintlnTask&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;println&#xA0;<span class="hljs-string">"App&#x7248;&#x672C;&#x662F;&#xFF1A;${versionName},&#xA0;&#x7248;&#x672C;&#x53F7;&#x662F;&#xFF1A;${versionCode}"</span><br>}<br>apply&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;plugin&#xA0;<span class="hljs-string">'java'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;<br>}<br><br>apply(<span class="hljs-keyword">new</span>&#xA0;Action<objectconfigurationaction>()&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">void</span>&#xA0;execute(ObjectConfigurationAction&#xA0;objectConfigurationAction)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;objectConfigurationAction.plugin(<span class="hljs-string">'java'</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>})<br></objectconfigurationaction>
  • 最后一种方式就是自定义一个action,然后在其execute方法中书写业务逻辑

二、使用第三发插件进行配置

buildscript&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;repositories&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;jcenter()<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;&#xA0;dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;classpath&#xA0;<span class="hljs-string">'com.android.tools.build:gradle:1.5.0'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}<br>apply&#xA0;<span class="hljs-string">plugin:</span>&#xA0;<span class="hljs-string">'com.android.application'</span>

三、plugins DSL方式

plugins&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;id&#xA0;<span class="hljs-string">'java'</span><br>}<br>
  • 使用这种方式和上面还是有一定差异,如果插件已经托管在了https://plugins.gradle.org/ 上,就可以不用在buildscript中配置classpath的依赖了,直接使用即可
plugins&#xA0;{<br>&#xA0;id&#xA0;<span class="hljs-string">"org.sonarqube"</span>&#xA0;version&#xA0;<span class="hljs-string">"1.2"</span><br>}

四、自定义插件

apply&#xA0;<span class="hljs-string">plugin:</span>&#xA0;zidingyiPlugin<br><span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">zidingyiPlugin</span>&#xA0;<span class="hljs-keyword">implements</span>&#xA0;<span class="hljs-title">Plugin</span><<span class="hljs-title">Project</span>>&#xA0;{</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-keyword">void</span>&#xA0;apply(Project&#xA0;project)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;project.task(<span class="hljs-string">'zidingyiPlugin'</span>)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;println&#xA0;<span class="hljs-string">"&#x81EA;&#x5B9A;&#x4E49;&#x63D2;&#x4EF6;"</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}

Gradle连载4-依赖包打包方式
  • 下面新建一个Groovy工程,自定义个jar包
<span class="hljs-keyword">package</span>&#xA0;com.example.myapplication;<br><br><span class="hljs-keyword">import</span>&#xA0;org.gradle.rujews.plugin;<br><span class="hljs-keyword">import</span>&#xA0;org.<br><br><br><span class="hljs-keyword">public</span>&#xA0;<span class="hljs-class"><span class="hljs-keyword">class</span>&#xA0;<span class="hljs-title">CustomPlugin</span>&#xA0;<span class="hljs-keyword">implements</span>&#xA0;<span class="hljs-title">Plugin</span><<span class="hljs-title">Project</span>></span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;<span class="hljs-function"><span class="hljs-keyword">void</span>&#xA0;<span class="hljs-title">apply</span><span class="hljs-params">(Project&#xA0;target)</span>&#xA0;</span>{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;target.task(<span class="hljs-string">"CustomTask"</span>)&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;println&#xA0;<span class="hljs-string">"&#x81EA;&#x5B9A;&#x4E49;&#x63D2;&#x4EF6;"</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}
  • 插件开发所需要的依赖
apply&#xA0;<span class="hljs-string">plugin:</span>&#xA0;<span class="hljs-string">'groovy'</span><br><br>dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;compile&#xA0;gradleApi()<br>&#xA0;&#xA0;&#xA0;&#xA0;compile&#xA0;localGroovy()<br>}
  • 在src/main/resources/META-INF/gradle-plugins目录下新建一个plugin id的properties文件内容为 implementation-class=com.example.myapplication.CustomPlugin
  • 然后再build.gradle中使用
buildscript&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;classpath&#xA0;file(<span class="hljs-string">'lib/CustomPlugin'</span>)<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}

五、Java插件约定的项目结构

Gradle连载4-依赖包打包方式
apply&#xA0;<span class="hljs-string">plugin:</span><span class="hljs-string">'java'</span><br><br>sourceSets&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;custom&#xA0;{<br><br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}<br><br><br><br>sourceSets&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;main&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;java&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;srcDir&#xA0;<span class="hljs-string">'src/java'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;resources&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;srcDir&#xA0;<span class="hljs-string">'src/resources'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;}<br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}

六、配置第三方依赖

repositories&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;mavenCentral()&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;maven&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;url&#xA0;<span class="hljs-string">'http://www.mavenurl.com'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;}<br>}<br><br>dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;compile&#xA0;<span class="hljs-string">group:</span>&#xA0;<span class="hljs-string">'com.squareup.okhttp3'</span>,&#xA0;<span class="hljs-string">name:</span>&#xA0;<span class="hljs-string">'okhttp'</span>,&#xA0;<span class="hljs-string">version:</span>&#xA0;<span class="hljs-string">'3.0.1'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;<br>}
  • 配置中心仓的方式,上面是配置了下载地点,下面是配置了要依赖什么组件
<br>dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;compile&#xA0;project(<span class="hljs-string">':exampleCustom'</span>)<br>}
  • 依赖一个project,那么我们的工程中可以随便用这个依赖的工程中的类,就像都在一个工程里面一样。
    Gradle连载4-依赖包打包方式
  • 除此之外,gradle还可以给不同的源码指定不同的依赖
dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;mainCompile&#xA0;<span class="hljs-string">'com.squareup.okhttp3:okhttp:3.0.1'</span><br>&#xA0;&#xA0;&#xA0;&#xA0;vipCompile&#xA0;<span class="hljs-string">'com.squareup.okhttp:okhttp:2.5.0'</span><br>}

Gradle连载4-依赖包打包方式

文件依赖

  • 我们把自有的一个jar放到本地,进行锁定依赖
dependencies&#xA0;{<br>&#xA0;&#xA0;&#xA0;&#xA0;complie&#xA0;file(<span class="hljs-string">'libs/jdis.jar'</span>,&#xA0;<span class="hljs-string">'libs/nngi.jar'</span>)<br>}<br><br>dependencies&#xA0;{<br>&#xA0;<br>&#xA0;&#xA0;&#xA0;&#xA0;compile&#xA0;fileTree(<span class="hljs-string">dir:</span><span class="hljs-string">'libs'</span>,&#xA0;<span class="hljs-string">includes:</span><span class="hljs-string">'*.jar'</span>)<br>}

七、构建一个Java项目

  • build任务,比如clean,可以清除以前编译生成的文件,如果编译有问题,可以先执行clean,清理
  • assemble任务,该任务不会执行单元测试,只会编译和打包,这个任务在Android里也有,执行它可以打apk包。
  • check任务,只会执行单元测试,不会打jar包
  • javadoc任务,生成我们需要的doc api文档

八、源码

  • gitee路径:https://gitee.com/dongqianrui/AndroidStudioProject/tree/master/Test1
  • CSDN:https://blog.csdn.net/weixin_44630050
  • 博客园:https://www.cnblogs.com/ruigege0000/
    Gradle连载4-依赖包打包方式

Original: https://www.cnblogs.com/ruigege0000/p/16205331.html
Author: 心悦君兮君不知-睿
Title: Gradle连载4-依赖包打包方式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607824/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球