1.新建Gradle项目:

2.建立src/main/groovy目录,并添加如下代码:

ConfigPlugin.groovy

package com.wemall.config

import org.gradle.api.Plugin
import org.gradle.api.Project class ConfigPlugin implements Plugin<Project> { void apply(Project project) {
project.extensions.create("configPluginExtension", ConfigPluginExtension)
project.task("configTask", type: ConfigTask)
}
}

ConfigTask.groovy
package com.wemall.config

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction import groovy.swing.impl.DefaultAction
import groovy.xml.Namespace
import groovy.xml.StreamingDOMBuilder class ConfigTask extends DefaultTask { static final String CONFIG_CENTER_URL = "http://192.168.127.137:8080/config-center-0.0.1-SNAPSHOT/"; @TaskAction
void download() { def names = project.configPluginExtension.name;
def version = project.configPluginExtension.version; names.each { name -> def inputStream = new URL(CONFIG_CENTER_URL + name).openStream(); println ("${project.projectDir} , ${project.buildDir}, ${project.rootDir}, ${project.resources}"); def file = new File("${project.projectDir}/src/main/resources/${name}");
file.withOutputStream {
outputStream ->
outputStream << inputStream;
}
}
} }

ConfigPluginExtension.groovy
package com.wemall.config

class ConfigPluginExtension {

    def name = [];
def version = "";
}

3.在src/main/resources下建立MEAT-INFO/gradle-plugins目录,并添加com.wemall.config.properties配置文件

com.wemall.config.properties内容,这个properties文件的名称,就为自定义Gradle插件名称.

implementation-class=com.wemall.config.ConfigPlugin

4.build.gradle文件内容:

apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'maven-publish' dependencies {
compile gradleApi()
compile localGroovy()
} group='com.wemall.config'
version='1.0.7-SNAPSHOT' publishing {
publications {
maven(MavenPublication) {
groupId project.group
artifactId project.name
version project.version
//若是war包,就写components.web,若是jar包,就写components.java
from components.java
}
}
repositories {
maven { if (project.version.endsWith('-SNAPSHOT')) {
url = "http://192.168.184.155:8081/repository/maven-snapshots/"
} else {
url = "http://192.168.184.155:8081/repository/maven-releases/"
} credentials {
username 'admin'
password 'admin123'
}
}
}
}

5.发布接入到nexus仓库中:

6.其他gradle项目引入插件:

buildscript {
repositories {
maven {
url 'http://192.168.184.155:8081/repository/maven-public/'
}
} dependencies {
classpath group: 'com.wemall.config',name: 'config-plugin',version: '1.0.7-SNAPSHOT'
}
} plugins {
id 'java-library'
} apply plugin: 'com.wemall.config' dependencies {
testImplementation 'junit:junit:4.12'
} configPluginExtension {
name = ["a.properties", "b.properties", "c.properties"]
version = "1.0.0-SNAPSHOT"
}

7.在引入插件的项目中运行插件:

gradlew -q configTask

此时configTask插件就可以连接到网址的配置中上下载配置文件。configTask名称为ConfigPlugin.groovy文件中的project.task("configTask", type: ConfigTask)字符串名称。

github:https://github.com/dingyingsi/configuration-download-plugin

gradle 自定义插件 下载配置文件的更多相关文章

  1. Gradle 自定义插件

    使用版本 5.6.2 插件被用来封装构建逻辑和一些通用配置.将可重复使用的构建逻辑和默认约定封装到插件里,以便于其他项目使用. 你可以使用你喜欢的语言开发插件,但是最终是要编译成字节码在 JVM 运行 ...

  2. Android gradle 自定义插件

    Gradle 的插件有三种打包方式: 构建脚本:插件逻辑写在 build.gradle 中,适用于逻辑简单的任务,但是该方式实现的插件在该构建脚本之外是不可见的,只能用于当前脚本. buildSrc项 ...

  3. AS 自定义 Gradle plugin 插件 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题

    在使用Android Studio 这个IDE时,出现com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题 可能的原因就是网速不好或者依 ...

  5. jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)

    上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...

  6. Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)

    在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...

  7. cordova3.X 运用grunt生成plugin自定义插件骨架

    Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还提供了一组统一的JavaScript类库,以及为这些 ...

  8. CKEditor在线编辑器增加一个自定义插件

    CKEditor是一个非常优秀的在线编辑器,它的前身就是FCKEditor,CKEditor据官方说是重写了内核的,但功能和性能比FCKEditor更为强大和优越.记得07年的时候第一次接触FCKEd ...

  9. BrnShop开源网上商城第四讲:自定义插件

    重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...

随机推荐

  1. javabean转换为map对象

    在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...

  2. 使用idea搭建maven-web项目

    使用idea搭建maven-web项目 1.用idea搭建项目:File--new--project 2.选择jdk版本,选择Maven-archetype-webapp来创建maven-web项目如 ...

  3. PowerShell工作流学习-5-自定义活动

    关键点: a)除了内置活动和自定义活动,还可以用C# 编写自定义活动,并将其包括在 XAML 工作流和脚本工作流中,若要将自定义活动添加到脚本工作流中,请使用 #Requires 语句的 Assemb ...

  4. C# 自动程序 windows 无法启动 XXXX 服务 错误5 拒绝访问

    遇到过两次 这样的问题了,所以记录一下 原因可能是服务所在文件的目录权限不够 解决方法: 1是查看服务对应的程序所在的目录 2是设置目录的安全权限 右击–属性–安全–添加相应的帐号,给予除完全控制外的 ...

  5. 一窍懂PID

    这是学习PID时的理解,做个笔记! 一:首选,说一下一些基本概念,为了更好理解. PID:就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构. P(proportion):比例,就是对输 ...

  6. 设置MessageBox自动关闭

    通过设置定时器,让定时器的Tick事件模拟往MessageBox发送一个Enter按钮代替用鼠标点击MessageBox上的确定按钮,来实现MessageBox的自动关闭,实现代码如下: System ...

  7. 64位 windows10,MYSQL8.0.13重置密码(忘记密码或者无法登录)

    上一节的MySQL的配置安装里,并没有用到配置文件my.ini.那在MYSQL8.0.13如何解决密码重置问题呢.我去网上搜了好多的资料都是改配置文件my.ini的,后来终于找到了一条命令:操作步骤如 ...

  8. #Java学习之路——基础阶段(第二篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. 解决微信小程序登录与发布的一些问题

    解决微信小程序的问题 图片在电脑上显示但在手机上却无法显示的问题 要使用的是本地图片,不想把图片上传到网络再通过https的方式解决,解决方法如下: 1.image src中的图片地址对英文字母大小写 ...

  10. 移动端适配方案-rem(基础篇)

    常见移动web适配方案一般有3种方法,如下图: ①:定高,宽度百分比(一般用来做一些适配性不高的页面,比如主要以一些文字和图片为主的网页或移动端的头部和底部) ②:flex (更多的用于复杂页面的布局 ...