gradle 自定义插件 下载配置文件
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 自定义插件 下载配置文件的更多相关文章
- Gradle 自定义插件
使用版本 5.6.2 插件被用来封装构建逻辑和一些通用配置.将可重复使用的构建逻辑和默认约定封装到插件里,以便于其他项目使用. 你可以使用你喜欢的语言开发插件,但是最终是要编译成字节码在 JVM 运行 ...
- Android gradle 自定义插件
Gradle 的插件有三种打包方式: 构建脚本:插件逻辑写在 build.gradle 中,适用于逻辑简单的任务,但是该方式实现的插件在该构建脚本之外是不可见的,只能用于当前脚本. buildSrc项 ...
- AS 自定义 Gradle plugin 插件 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题
在使用Android Studio 这个IDE时,出现com.android.tools.build:gradle:X.XX.XX:gradle.jar 插件无法下载问题 可能的原因就是网速不好或者依 ...
- jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
上一篇记录了BaiduTemplate模板引擎使用示例附源码,在此基础上对使用方法进行了封装 自定义插件jajaxrefresh.js 代码如下: //闭包限定命名空间 (function ($) { ...
- Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)
在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...
- cordova3.X 运用grunt生成plugin自定义插件骨架
Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还提供了一组统一的JavaScript类库,以及为这些 ...
- CKEditor在线编辑器增加一个自定义插件
CKEditor是一个非常优秀的在线编辑器,它的前身就是FCKEditor,CKEditor据官方说是重写了内核的,但功能和性能比FCKEditor更为强大和优越.记得07年的时候第一次接触FCKEd ...
- BrnShop开源网上商城第四讲:自定义插件
重要通知:BrnShop企业版NOSQL设计(基于Redis)已经开源!源码内置于最新版的BrnShop中,感兴趣的园友可以去下载来看看.官网地址:www.brnshop.com. 好了现在进入今天的 ...
随机推荐
- 死锁问题------------------------INSERT ... ON DUPLICATE KEY UPDATE*(转)
前言 我们在实际业务场景中,经常会有一个这样的需求,插入某条记录,如果已经存在了则更新它如果更新日期或者某些列上的累加操作等,我们肯定会想到使用INSERT ... ON DUPLICATE K ...
- linux 挂载ntfs格式的硬盘
一.安装ntfs 1.下载 sudo wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz 2.解压 sudo tar ...
- Linux运行模式
查看运行模式 cat /etc/inittab 0.表示关机模式,不要把默认模式设置成0 1.表示单用户模式 2.表示多用户模式 3.表示命令行模式 4.表示暂未被使用的模式,以后有可能会被使用 5. ...
- REdis命令处理流程处理分析
分析版本:REdis-5.0.4. REdis命令处理流程可分解成三个独立的流程(不包括复制和持久化): 1) 接受连接请求流程: 2) 接收请求数据和处理请求流程,在这个过程并不会发送处理结果给Cl ...
- Open/Close Port in Centos
1. Show status /etc/init.d/iptables status 2.Set Port iptables -I INPUT -p tcp --dport 80 -j ACCEPT ...
- ie9上传文件
兼容ie9文件上传,解决ie9下提示下载或保存 如果不考虑ie9兼容性,实现[上传图片]大致的思路如下: 由于公司是将所有上传的图片都放到[代理服务器]里.所以[上传图片]其实是上传到[代理服务器]. ...
- web项目中对post请求乱码处理
<filter> <filter-name>characterEncoding</filter-name> <filter-class>org.spri ...
- Spring使用Autowiring自动装配 解决提示报错小技巧
1.打开Settings 输入Inspections 找到Spring --> Spring Core --> Code --> Autowiring for Bean ...
- Self referencing loop detected for property 错误
EF 序列化返回json时 报错:Self referencing loop detected for property 解决方案:在webapiconfig.cs文件中,增加设置: 1.config ...
- API网关-Ocelot概述
这个框架的整体思路其实就是Redirect请求并且附带一个简易的负载均衡机制,完全搭建MVC Core项目下在Ocelot项目启动的时候需要配置所有的ReRoute集合,这里的每一个ReRoute可以 ...