gradle 打包 groovy 的配置

文章目录
  1. gradle 打包 groovy 的配置
  2. 执行 groovy 脚本

主题:

  • 如何使用 gradle 打包 groovy 代码(jar包)
  • 执行时如何传递参数

gradle 打包 groovy 的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
def name='requirement-dashboard-v0.1'
def appMainClass = 'ProductRequirementManagement'
apply plugin: "groovy"

jar {
baseName "${name}"
from {
configurations.runtime.collect{zipTree(it)}
}
exclude('logs/')
manifest {
attributes 'Main-Class': appMainClass
}
into('/')
}

repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}
}

dependencies {
compile "org.apache.poi:poi:3.15"
compile "org.apache.poi:poi-ooxml:3.15"
compile "com.h2database:h2:1.4.200"
compile 'ch.qos.logback:logback-classic:1.2.3'
compile "org.codehaus.groovy:groovy-all:2.5.11"
}

sourceSets {
main {
groovy {
srcDirs = ['src']
}
resources {
srcDir 'resources'
}
}
}

task runScript(type: JavaExec) {
description 'Run Groovy script'
main = appMainClass
classpath = sourceSets.main.runtimeClasspath
if (project.hasProperty('params')) {
args(params)
}
}

defaultTasks 'runScript'

执行 groovy 脚本

1
2
3
4
5
#默认执行 runScript task
gradle groovyScriptName
gradle runScript groovyScriptName
#指定参数 params
gradle groovyScriptName -Pparams=paramsValue

Groovy 管理依赖

文章目录
  1. 用法示例
  2. 可能的问题
    1. 修改日志级别,打印grape download信息
    2. 修改 grape 默认配置信息
    3. 使用 grape 命令 下载依赖包
    4. 参考文档

Grape 是一个内嵌在 Groovy 中的 JAR 依赖项管理器。它能使你在类路径上快速添加 Maven 库依赖项,更易于编写脚本。最简单的用法是在脚本上添加注释(annotation)

1.1 添加一个依赖项
1.2 指定附加依赖库
1.3 Maven 分类器
1.4 排除传递性依赖
1.5 JDBC 驱动
1.6 利用 Groovy Shell 来使用 Grape
1.7 代理设置
1.8 日志

用法示例

1
2
3
4
5
6
7
8
9
10
11
12
@Grapes([
@GrabConfig(systemClassLoader=true),
@GrabResolver(name='maven', root='https://repo1.maven.org/maven2/'),
@Grab(group='com.h2database', module='h2', version='1.4.193', scope='test')
])
import javax.imageio.*
import java.awt.image.*
import java.awt.*
import java.io.*
import groovy.json.JsonBuilder
import groovy.sql.Sql
import java.text.SimpleDateFormat

可能的问题

一直没任何响应

修改日志级别,打印grape download信息

1
groovy -Divy.message.logger.level=4 -Dgroovy.grape.report.downloads=true test.groovy

可以看到输出如下:一直停留在从 jcenter上下载jar包

1
2
3
4
5
6
7
8
9
10
Nbr of module to sort : 1
Sort dependencies of : com.h2database#h2;1.4.193 / Number of dependencies = 0
Sort done for : com.h2database#h2;1.4.193
storing dependency com.h2database#h2;1.4.193 in props
resolved ivy file produced in cache
:: downloading artifacts ::
Preparing to download artifact com.h2database#h2;1.4.193!h2.jar
trying https://jcenter.bintray.com/com/h2database/h2/1.4.193/h2-1.4.193.jar
tried https://jcenter.bintray.com/com/h2database/h2/1.4.193/h2-1.4.193.jar
`

之前设置的 GrabResolver 好像没有其作用

修改 grape 默认配置信息

在 ~/.grape目录下创建 grapeConfig.xml,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<ivysettings>
<settings defaultResolver="downloadGrapes"/>
<resolvers>
<chain name="downloadGrapes" returnFirst="true">
<filesystem name="cachedGrapes">
<ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
<artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"/>
</filesystem>
<ibiblio name="localm2" root="${user.home.url}/.m2/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true"/>
<!-- TODO: add 'endorsed groovy extensions' resolver here -->
<ibiblio name="aliyun" root="https://maven.aliyun.com/repository/jcenter/" m2compatible="true"/>
<!--<ibiblio name="jcenter" root="https://jcenter.bintray.com/" m2compatible="true"/>-->
<ibiblio name="ibiblio" m2compatible="true"/>
</chain>
</resolvers>
</ivysettings>

注意:注销掉 jcenter 的 repo,因为不知为何,这个 repo 能正常访问到,但是无法下载 h2 的 jar,添加阿里云的repo,这里需要注意的是不能用网上教程给的 repo 地址,http://maven.aliyun.com/nexus/content/groups/public/ ,去阿里云页面上找最新的地址:https://maven.aliyun.com/mvn/view

使用 grape 命令 下载依赖包

如果采用默认的 jcenter 设置,即使用 grape 命令也是一样会卡在下载 jar 包的环节。

1
grape -V install com.h2database h2 1.4.193

输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
:: resolving dependencies :: caller#all-caller;working04
confs: [default]
validate = false
refresh = false
resolving dependencies for configuration 'default'
== resolving dependencies for caller#all-caller;working04 [default]
== resolving dependencies caller#all-caller;working04->com.h2database#h2;1.4.193 [default->default]
downloadGrapes: Checking cache for: dependency: com.h2database#h2;1.4.193 {default=[default]}
downloadGrapes: module revision found in cache: com.h2database#h2;1.4.193
found com.h2database#h2;1.4.193 in jcenter
== resolving dependencies caller#all-caller;working04->com.h2database#h2;1.4.193 [default->runtime]
== resolving dependencies caller#all-caller;working04->com.h2database#h2;1.4.193 [default->compile]
== resolving dependencies caller#all-caller;working04->com.h2database#h2;1.4.193 [default->master]
resolved ivy file produced in cache
:: downloading artifacts ::
tried https://jcenter.bintray.com/com/h2database/h2/1.4.193/h2-1.4.193.jar
downloading https://jcenter.bintray.com/com/h2database/h2/1.4.193/h2-1.4.193.jar ...
jcenter: downloading https://jcenter.bintray.com/com/h2database/h2/1.4.193/h2-1.4.193.jar

参考文档

Picture stitch - 将指定目录中的图片拼接成缩略图

github地址:+ picture-stitch

功能简介 Introduction

  1. 扫描指定目录,将目录下所有非 thumb.jpg 结尾的 jpg 图片文件拼接成一个大图
  2. 自动根据目录中的图片数量调整,10张以内分2行,20张以内分3行,40张分4行,100张分5行,200张分6行,超过200张退出。
  3. 拼接时为了整齐,会将所有宽大于高图片拼一列,高大于宽的拼一列
  4. 先按指定数量将图片竖着拼起来,然后再把所有拼好的竖拼图片横拼,保证最终出的图不会出现空白
  5. 竖拼时,会对图片做缩放,依据是3张图片的高度不超过配置的最大像素。
  6. 最终拼接时还会做一次调整,因为竖排和横排的高度肯定不一致,调整时会向上调整到高度最大的

详细内容

另一种节奏

2020这个庚子年,真不是一般的不同凡响,先是新冠病毒肆虐全国,十几亿人居家隔离,然后又是蔓延全球,无法遏制。美股4熔断,黄金振幅250……;抛开大事这些不提,只论对个人的影响,也是巨大的,连续2个月带口罩上班,已经让我产生了口罩依赖,偶尔没带口罩出门,就感觉跟没穿衣服一般了……

详细内容

阴晴之间

午后,外面阳光正好,和老婆一起给小宝理发,洗澡,大宝也来帮忙,家里一下又充满欢声笑语起来,与刚才因为作业的事情弄得火药味十足的场景形成了鲜明对比,以前对照顾小朋友生活的种种琐事一向都很是排斥,但是现在越来越觉得,这同时也是种乐趣,你与孩子互动的少,他就会与你有距离,当你想靠近他时,他就会有畏惧,世间的一切都能量守恒,没有什么是理所应当的,你付出,才有回报,其实,大部分的时候你付出也未必会得到想要的回报,但是也不用太在意,古语说的好,“失之东隅收之桑榆”,保持平常心吧,对着不懂事的孩子大吼,只会让事情朝着你想要的相反的地方发展。

详细内容

Hexo入门


如何搭建 Hexo,以及简单的使用;包括主题的安装和一些定制;最后是相关问题的解决

安装

  1. 安装脚手架
    npm install -g hexo-cli

  2. 初始化项目(网络原因,很大可能性会到安装 theme landscape 时 失败)
    hexo init blog

    手动安装 theme landscape 方法:
    git clone --depth 1 https://github.com/hexojs/hexo-theme-landscape themes/landscape

  3. 安装(如果不执行这一步,hexo 就没有 server 命令,generate 时会什么页面也不生成)
    cd blog;npm install

使用

  1. 创建新 blog
    hexo new first-blog
  2. 生成静态页面
    hexo generate
  3. 本地运行
    hexo server

详细内容

为 Hexo 创建的博客添加评论

本文简单描述了如何快速为 Hexo 创建的 Blog 添加评论功能……

  • Github大礼包:gitment, gitalk(推荐),gitter(推荐); 三个都支持Markdown;
  • 基于 leancloud 的无后端评论系统:Valine(推荐,支持Markdown);
  • 国外的有几个:disqus(漂亮,但需翻墙),hypercomments(推荐,不支持Markdown).
  • 以前的多说挺不错,但是可惜已经成为历史了

综合考虑,当前的最佳选择我认为是 Valine,具体步骤如下

注册 leancloud 账号,获取 APPID 和 API Key

LeanCloud 上注册账号
注意:

  1. 需要手机号和验证码注册。
  2. 提供身份证号,使用支付宝扫描二维码,视频认证的方式通过实名认证后才可以创建应用

创建应用

新应用名称随意填
计价方案选择“开发版”即可

详细内容