从前面的示例中不难看出validate中自带的验证方法足以满足一般的要求,对于特别的要求可以使用addMethod(name,method,message)添加自定义的验证规则,下面的示例中添加了一个用于正则表达式验证的扩展验证的方法 这里可以是一个匿名方法 equalTo: "#txtPassword1", //必须与密码1相等 rangelength: [5, 10], //长度5-10之间 regex: "^\\w+$" //使用自定义的验证规则,在上例中新增的部分 alert("开始提交了"); } }); }); </script> 运行结果: 注意,如果参数有多个可以使用数组,如regex:[1,3,5] :25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
文章目录 一、自定义插件作用 二、Android Gradle 插件的 AppExtension 扩展 三、自定义 Extension 扩展 Android Plugin DSL Reference 参考文档 ---- 在 Gradle 自定义插件 Plugin 中 , 如果要执行复杂的工作 , 可以在 实现的 Plugin 接口的 apply 函数中执行 ; package org.gradle.api; public interface Plugin<T> { void apply(T var1); } 一般情况下 , 自定义插件工程都是针对 特定的 需求 , 开发固定功能的插件 ; 二、Android Gradle 插件的 AppExtension 扩展 ---- Android Gradle 插件 也是一个 自定义插件 , 这个插件功能复杂 , 代码量较大 , 如 定义了 AppExtension ; 自定义 Gradle 插件中 , 可以定义自己的扩展 ; 首先 , 调用 project.extensions.create 方法 , 创建扩展 , 类似于 Android Gradle 插件中的
文章目录 一、在 buildSrc 模块中定义 Gradle 插件 二、在 build.gradle 构建脚本中自定义 Gradle 插件 三、在其它 gradle 脚本中字定义 Gradle 插件 Android 该 自定义 Gradle 插件可以在当前工程中的所有 Module 子模块都可以使用 ; 自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012 /Android_UI 二、在 build.gradle 构建脚本中自定义 Gradle 插件 ---- 在 build.gradle 构建脚本中 , 也可以创建自定义 Gradle 插件 , 并调用该插件中的方法 MyPlugin2 这种方式需要拷贝代码 , 通用性不高 ; 自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 三 导入成功 ; 自定义 Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI
在Gradle中创建自定义插件,Gradle提供了三种方式: 在build.gradle脚本中直接使用 在buildSrc中使用 在独立Module中使用 开发Gradle插件可以在IDEA中进行开发 pluginsrc.properties中的名字——pluginsrc,通过这种方式,就加载了自定义的插件。 在buildSrc中创建自定义Gradle插件只能在当前项目中使用,因此,对于具有普遍性的插件来说,通常是建立一个独立的Module来创建自定义Gradle插件。 部署到本地Repo 因为是通过自定义Module来创建插件的,因此,不能让Gradle来自动完成插件的加载,需要手动进行部署,所以,需要在插件的build.gradle脚本中增加Maven的配置,脚本如下所示 引用插件 在buildSrc中,系统自动帮开发者自定义的插件提供了引用支持,但自定义Module的插件中,开发者就需要自己来添加自定义插件的引用支持。
前言:自定义插件就是解决在maven执行过程的生命周期里执行一些自定义的逻辑。 public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("自定义插件成功 ,参数name:" + name); } } 其中注释就是maven插件很重要的元数据 /** * @goal CustomMavenMojo:表示该插件的服务目标 * @phase compile:表示该插件的生效周期阶段 * @requiresProject false:表示是否依托于一个项目才能运行该插件 * @parameter expression="${name 5.在其他项目中依赖该插件 <plugin> <groupId>com.wangnian</groupId> <artifactId>CustomMaven-plugin
你可以使用你喜欢的语言开发插件,但是最终是要编译成字节码在 JVM 运行的。 Gradle 有两种插件,脚本插件和二进制插件。 关于插件的介绍,可以参考我的另一篇文章 Gradle 插件 这里讲的自定义插件是二进制插件,二进制插件可以打包发布,有利于分享。 可以在三个地方定义插件 在脚本里 在 buildSrc 下 在单独的项目里 三个地方的插件的用途目的不同。 在脚本里的插件 其他项目无法使用,只能在本脚本里使用。 fruit.getName(), fruit.getColor()); getLogger().quiet("fruit : {}",format); }); } } 关于自定义插件的相关介绍就这些了 ,更详细的文档可以查看 Gradle 用户手册 这篇文章的源码已经放在 github 上:GradlePractice 资料 自定义插件 https://docs.gradle.org/current
制作插件 修改packaging <artifactId>tenmao-plugin</artifactId> <! maven-plugin-annotations</artifactId> <version>3.6.0</version> <scope>provided</scope> </dependency> 这两个依赖是自定义插件必须的依赖 每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的Java类。 插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。 :name */ @Parameter private String name; /** * 插件参数:age */ @Parameter
文章目录 一、Android Gradle 插件扩展的扩展 二、为自定义 Gradle 插件的扩展配置扩展 并 获取扩展属性 Android Plugin DSL Reference 参考文档 : Android ---- 在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 ) 中 , 实现了 自定义插件 的 扩展 Extension , 在 Module 模块下的 build.gradle 构建脚本中 , android 配置块 就是一个 AppExtension Plugin 插件 的 Extension 扩展 中 , 再 定义一层 Extension 扩展 ; 二、为自定义 Gradle 插件的扩展配置扩展 并 获取扩展属性 ---- 定义扩展类 : class ("myplugin", MyPluginExtensions) // 为 MyPlugin 自定义插件的 myplugin 扩展定义 扩展 mypluginextension
5. Loader webpack loader 将所有类型的文件,转换为应用程序的依赖图(和最终的 bundle)可以直接引用的模块。 6. Plugin 插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。 插件编写实例 接下来我们开始编写自定义插件,所有插件使用的示例项目如下(需要安装webpack和webpack-cli): |----src |----main.js |----plugins Webpack 插件基本架构 插件由一个构造函数实例化出来。构造函数定义 apply 方法,在安装插件时,apply 方法会被 Webpack compiler 调用一次。 5. 实现流程 5.1 实现的原理 通过HtmlWebpackPlugin生成 HTML 文件前,将模版文件预留位置替换成脚本,脚本中执行自动添加时间戳来引用脚本文件。
Traefik 已经默认实现了很多中间件,可以满足大部分我们日常的需求,但是在实际工作中,用户仍然还是有自定义中间件的需求,为解决这个问题,官方推出了一个 Traefik Pilot[1] 的功能了, 接下来我们就可以在 Traefik Pilot 的插件页面选择我们想要使用的插件,比如我们这里使用 Demo Plugin[2] 这个插件。 需要注意的是由于在每次启动的时候插件只加载一次,所以如果我们希望重新加载你的插件源码的时候需要重新启动 Traefik。 下面我们使用一个简单的自定义插件示例来说明如何使用私有插件。 Pilot 中演示的是同一个插件,我们可以通过该插件去自定义请求头信息。 ,将镜像修改成上面我们自定义的镜像地址: image: name: cnych/traefik-private-demo-plugin tag: 2.5.4 # 其他省略 # 不需要开启 pilot
一、Cordova的基础点 在混合式应用中,我们通过现有的Cordova插件,可以轻松的在 H5 上调用手机native的功能。 现有的Cordova插件能满足平时大部分的开发需求,然而,有时候找不到合适的插件、或对找到的插件有不满意的地方,那就要动手去做或改写一个插件,这时候就要了解一些Cordova插件的相关知识。 那Cordova插件的基础要点是什么呢?其实就是把原生代码调用方法映射为js的统一接口,供H5使用而已. Cordova 自定义插件的官方文档 二、观察现有应用结构 打开任意一个基于Cordova技术的hybird app的开发目录,添加过平台(android、ios等)和安装过插件的话,你会发现结构大致是这样子的 目录下的那个js) name:模块名称 clobbers/merges target:H5通过它调用js中间件方法(ts调用方法的前缀) - platform name
apisix 自定义插件 apisix有丰富的官方插件,已经很大程度上满足了开发者的需求,大多数功能可以选用官方插件解决,但是仍然很难满足有些业务的个性化需求。 因此apisix提供了完整的插件开发规范,开发者可以根据规范实现业务特定的插件。本章将先以一个最简单的插件来讲解如何开发一个apisix插件,通过一个简单插件了解apisix 插件的基本组成。 然后讲解开发插件的详细步骤以及插件中各个部分更详细的内容。 开发简单的插件 自定义header。通过该插件可以实现给请求添加自定义header的功能。 开发自定义插件逻辑代码 local ngx = ngx local core = require("apisix.core") local schema = { type = "object", properties M.ssl_certificate _M.set _M.rewrite 2 _M.access 3 _M.content _M.balencer _M.header_filter 4 _M.body_filter 5
关于gradle插件自定义,发现网上好多的错误教程,总结后的文章,若本文中也有错误,请及时指正 在Gradle中创建自定义插件,Gradle提供了三种方式: 在build.gradle脚本中直接使用 在 根据官网的描述,这里在项目中进行使用的gradle插件过程如下: 首先在Android Studio中创建一个标准的Android项目,然后在项目的根目录下新建一个model命名为buildSrc,这个目录就用来存放自定义插件 在主项目中使用插件 在主项目的build.gradle文件中,通过apply指令来加载自定义的插件,脚本如下所示: apply plugin: 'myCustomGradle' 其中plugin的名字 ,就是前面创建myCustomPlugin.properties中的名字——myCustomPlugin,通过这种方式,就加载了自定义的插件。 在buildSrc中创建自定义Gradle插件只能在当前项目中使用,因此,对于具有普遍性的插件来说,通常是建立一个独立的Module来创建自定义Gradle插件。 创建过程请参考上节中的 《二.
文章目录 一、将自定义 Gradle 插件上传到远程仓库中 二、创建自定义插件类型模块 ( Java or Kotlin Library ) 三、手动导入相关依赖 ( Java | Groovy | Gradle Gradle 插件 - GitHub 地址 : https://github.com/han1202012/Android_UI 一、将自定义 Gradle 插件上传到远程仓库中 ---- 在上一篇博客 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 ) 中 , 总结了在 Android Studio 工程中 自定义 Gradle 插件 , 并在 build.gradle 构建脚本 中导入插件的代码 ; Android Gradle 插件 也是一种 自定义的 ; 这种方式是将 自定义 Gradle 插件 的 jar 包 上传到了 jcenter / google / mavenCentral 远程仓库 中 ; 二、创建自定义插件类型模块 ( Java
文章目录 一、自定义插件中定义普通方法 二、自定义插件中定义 Gradle 任务 Task 三、代码示例 代码结构 自定义插件 自定义扩展 自定义扩展的扩展 自定义 Gradle 任务 build.gradle ---- 在 自定义 Gradle 插件 的 Extension 扩展 中 , 可以定义方法 , 定义的方法可以带参数 , 也可以不带参数 ; 代码示例如下 : class MyPluginExtensions Gradle 任务 Task ---- 在 Android Studio 的 Gradle 面板中的 Task 任务 , 都是在 Android Gradle 插件中定义的 , 在自定义插件中 , 也可以自定义 Gradle 任务 ; 首先 , 先自定义 Task 任务 , 继承 DefaultTask 类 , 实现一个任务执行方法 , 参考 【Android Gradle 插件】自定义 Gradle 任务 { @TaskAction void run() { println 'MyTask TaskAction' } } 然后 , 在自定义插件中 , 创建 Task
Library 模块中定义插件 四、配置自定义 Gradle 插件发布选项 五、配置 Group 分组、插件名称、插件版本号 六、自定义 Gradle 插件发布配置 七、META-INF 中声明自定义插件的核心类 八、将插件上传到本地 Maven 仓库 九、在应用中依赖本地 Maven 仓库中的自定义 Gradle 插件 十、完整代码示例 自定义插件代码 自定义插件 Gradle 构建脚本 自定义插件插件类配置 Gradle 插件】自定义 Gradle 插件模块 ② ( 在模块中定义插件 | 引入自定义 Gradle 插件模块 | 配置 Gradle 插件上传选项 | 配置分组名称版本号 ) 中 , 定义完插件后 , 在 自定义 Gradle 插件模块 的 build.gradle 构建脚本中 , 添加了 插件上传仓库的 配置 , 为插件指定了 分组 , 版本号 , 名称 配置 ; // 指定自定义 Gradle 插件的分组 group 'kim.hsl.plugin' // 指定自定义 Gradle 插件的版本号 version '0.1' // 自定义 Gradle 插件的名称 , 默认为工程名 //
虽然wireshark自带了很多知名协议的解析插件,譬如HTTP、DHCP等等,然而在实际应用环境中,有不少软件之间的通信协议都是私有的,如游戏客户端和服务器之间的交互协议通常都是私有的,wireshark 本文一个自定义的简单协议入手,分析如何基于wireshark开发自定义协议分析插件。 ? 1.1. 概述 本书使用Go语言来描述协议的交互过程。 协议描述 1 package packet 2 3 import ( 4 "bytes" 5 "encoding/binary" 6 "fmt" 7 "os 客户端 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 ) 7 8 import "packet" 9 10 func 服务端 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 ) 7 8 import "packet" 9 10 func
本文你将了解: [1].如何创建一个Flutter插件的 [2].Flutter中如何和Android以及iOS交互(本文使用Kotlin和Swift) [3].Flutter插件的使用 1.Flutter 插件创建与结构简析 1.1:创建一个Flutter插件 File-->new-->new Flutter Project... [5].覆写了onMethodCall方法,回调MethodCall和Result对象, 在方法体中根据方法名`getPlatformVersion`来用result对象执行方法传入Android版本信息 [5].handle方法,回调FlutterMethodCall和FlutterResult对象, 用result对象执行方法传入iOS版本信息。 本文讲了一下插件的自定义和在两个平台上的代码处理, 下一篇将详细讲述MethodChannel,让你在Flutter中无后顾之忧。
除了 APISIX 官方内置的插件之外,我们也可以根据自己的需求去自定义插件,要自定义插件需要使用到 APISIX 提供的 Runner,目前已经支持 Java、Go 和 Python 语言的 Runner ,这个 Runner 相当于是 APISIX 和自定义插件之间的桥梁,比如 apache-apisix-python-runner 这个项目通过 Python Runner 可以把 Python 直接应用到 调用分为两个阶段: ext-plugin-pre-req:在执行 APISIX 内置插件之前 ext-plugin-post-req:在执行 APISIX 内置插件之后 接下来我们就以 Python 为例来说明如何自定义插件 创建后同样在 Dashboard 中也可以看到 APISIX 中的路由配置格式: 接着我们可以来访问 http://ops.qikqiak.com/extPlugin 这个路径来验证我们的自定义插件: 到这里就完成了使用 Python 进行 APISIX 自定义插件,我们有任何的业务逻辑需要处理直接去定义一个对应的插件即可。
本文内容包括: 利用AndroidStudio,编写自定义Gradle plugin MavenDeployer 发布plugin 使用Gradle plugin 简介 之前写了一个Android中的AOP 框架Cooker.这里总结一下里面用到的两块小知识: 1)自定义 Gradle plugin2)发布自己的jar到 maven仓库 项目中引入自定义Gradle plugin一般有三种方法: 直接写在 } } } 5.一个简单的plugin就写好了 在cooker-plugin项目中, build一下.就能在build/libs下生成对应的plugin插件了 ? 这个插件就能使用了. 总结 Demo地址-Github到此为止, 自定义Gradle plugin就介绍完了.结合AndroidStudio, 自定义Gradle plugin可以完成很多功能. 开发只针对当前项目的Gradle插件(附) 前面我们讲了如何自定义gradle插件并且打包出去,可能步骤比较多。有时候,你可能并不需要打包出去,只是在这一个项目中使用而已,那么你无需打包这个过程。