ITPub博客

首页 > 数据库 > 数据库开发技术 > 使用groovy脚本使gradle灵活加载本地jar包的两种方式

使用groovy脚本使gradle灵活加载本地jar包的两种方式

原创 数据库开发技术 作者:FunTester 时间:2019-08-24 09:34:55 0 删除 编辑

本人在使用Jenkins做测试项目的可持续集成过程中,构建工具用的gradle,但由于一些jar包是并私有仓库给用,暂时没有搭建计划。这就导致了我构建项目的时候需要的jar的地址往往是不一样的,而且服务器和本地的版本可能也有所差别,经常其他同学提交代码时候把build.gradle文件一并提交了,倒是仓库文件比较乱。为了解决这个问题,看了一些资料再研究了一点点gradle的使用后总结了两种方法。

第一种思路:把每个人的项目依赖的jar包地址给固定了,然后用判断当前用户是哪个,再去给complie files参数赋值。比较笨,但是比较容易理解,由于框架的jar包和一些固定的jar包版本不怎么发生变化,维护成本较低。也是我这个菜鸟想到的第一个办法,虽然已经不用了,还是记录一下比较好

第二种思路:每次去局域网服务器下载jar包,比对版本,如果一样则下载到项目的文件夹里,再去给complie files参数赋值。这个比较简单,而且能够做到jar包版本更新的时候自动同步(服务端的jar有Jenkins生成)。暂时想到的比较好的办法。

分享一下代码,供大家参考:

 1buildscript {
2    ext {
3        springBootVersion = '1.5.13.RELEASE'
4    }
5    repositories {
6        mavenLocal()
7        mavenCentral()
8    }
9    dependencies {
10        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
11    }
12}
13
14apply plugin: 'java'
15apply plugin: 'idea'
16apply plugin: 'org.springframework.boot'
17apply plugin: 'io.spring.dependency-management'
18
19group = 'com.fission.test'
20version = '0.0.1-SNAPSHOT'
21sourceCompatibility = 1.8
22
23repositories {
24    mavenLocal()
25    mavenCentral()
26}
27def jarversion = "api_test_najm-1.0-SNAPSHOT.jar"
28def path = getPath2(jarversion)
29
30def getPath() {
31    def local;
32    File file1 = new File("/Users/Vicky/Documents/workspace/api_test_najm/build/libs/api_test_najm-1.0-SNAPSHOT.jar")
33    File file2 = new File("/go/jar/api_test_najm-1.0-SNAPSHOT.jar")
34    if (file1.exists()) {
35        local = file1.getAbsoluteFile()
36    } else if (file2.exists()) {
37        local = file2.getAbsoluteFile()
38    }
39    println local
40    return local
41}
42
43def getPath2(String v) {
44    def jarpath = new File("").getAbsolutePath() + "/long/" + v
45    if (new File(jarpath).exists()) return jarpath
46    def url = new URL("http://**.***.**.**:****/go/jar/" + v)
47    def out = new FileOutputStream(jarpath)
48    out << url.newInputStream()
49    return jarpath
50}
51
52
53dependencies {
54    runtime('org.springframework.boot:spring-boot-devtools')
55    compile('org.springframework.boot:spring-boot-starter-web')
56    testCompile('org.springframework.boot:spring-boot-starter-test')
57    compile "org.springframework.boot:spring-boot-starter-thymeleaf"
58    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0'
59    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0'
60    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.8.0-beta2'
61    compile files(path)
62}

由于之前接触过groovy语言,写起了也非常顺手,先简单写个例子。以后有机会继续分享gradle自定义脚本任务和Jenkins集成的实践经验。

往期文章精选

  1. java一行代码打印心形

  2. Linux性能监控软件netdata中文汉化版

  3. 接口测试代码覆盖率(jacoco)方案分享

  4. 性能测试框架

  5. 如何在Linux命令行界面愉快进行性能测试

  6. 图解HTTP脑图

  7. 写给所有人的编程思维

  8. 将json数据格式化输出到控制台

  9. 如何测试概率型业务接口

  10. 将swagger文档自动变成测试代码

  11. Mac+httpclient高并发配置实例

  12. httpclient处理多用户同时在线

公众号地图 ☢️ 一起来~FunTester


原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420673