前文说到了简单Gradle插件的创建方法,如果你还没有看过,建议你先行阅读一下:
本文将说明单独的插件“项目”的创建方法,以及如何将插件打包上传到Maven服务器,本文的内容相对就少得多了。
独立插件项目的创建
创建Module
与前文所提到的建立buildSrc目录的步骤几乎完全一样,你可以新建任意名字的文件夹作为插件项目(这里可以看作当前Android项目的Module)的目录,这里我就命名为cog-gradle-plugin吧:
与前文的差异就是,这里在main目录下多了一个java目录,而且跟groovy目录一样,同样建了一个包com.peceoqicka.cog。因为在这里gradle插件是使用groovy混合java开发的,至于groovy中怎么调用java,一句话说就是在java中怎么调用java,groovy就可以怎么调用,很方便不是吗。
记住一个关键的步骤,一定要在settings.gradle文件里添加这个Module的引用,否则无法识别。
include ':app', ':cog-gradle-plugin'复制代码
上传到Maven
按照上述步骤建立好项目并调试好插件代码之后,就可以上传了。在build.gradle文件中添加插件:
apply plugin: 'maven'复制代码
并且定义好项目的唯一ID(group)和版本号(version):
group = 'com.peceoqicka.cog'version = '1.0.2'复制代码
添加上传的task:
uploadArchives { repositories { mavenDeployer { repository(url: uri('http://localhost:8081/repository/maven-releases/')) { authentication(userName: 'admin', password: 'admin123') } } }}复制代码
最终build.gradle文件的内容应该跟如下的大致相同:
apply plugin: 'groovy'apply plugin: 'maven'group = 'com.peceoqicka.cog'version = '1.0.2'dependencies { //...插件中用到的其他库 compile gradleApi() compile localGroovy()}repositories { mavenCentral()}uploadArchives { repositories { mavenDeployer { repository(url: uri('http://localhost:8081/repository/maven-releases/')) { authentication(userName: 'admin', password: 'admin123') } } }}复制代码
注意下方的mavenDeployer中的代码,repository中定义了maven服务器的地址,这里使用的是本地的Maven服务器地址,并添加了认证参数(帐号和密码)。
那么,上传到Maven服务器的准备工作就已经完成了。接下来打开Android Studio右边的Gradle面板,可以看到一个叫做upload的任务:
双击运行这个任务,这时候gradle就会自动执行打包上传,等待上传完成即可。 上传到Maven服务器的库如何在实际项目中引用,很简单。对于任意一个本地新建的Android项目,在项目的build.gradle中修改代码:
buildscript { repositories { jcenter() mavenCentral() //添加对本地Maven服务器地址的引用 maven{ url uri('http://localhost:8081/repository/maven-releases/') } } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' //添加插件引用 classpath 'com.peceoqicka.cog:cog-gradle-plugin:1.0.2' }}复制代码
添加的代码都有注释,很简单,首先添加本地Maven服务器的地址,然后再添加插件项目的引用,引用的名称规则是“group名:项目名:版本号”。然后还有一个关键步骤,启用插件,在app的build.gradle中添加:
apply plugin: 'com.peceoqicka.cog'复制代码
那么本文要说的内容就这么多了,至于本地的Maven服务器如何搭建,请自行查阅资料“用NEXUS搭建Maven私服”,很简单,我就不细说了。
本篇文章仅代表个人观点,难免会有疏漏或者谬误之处,欢迎批评指正。