前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用groovy脚本使gradle灵活加载本地jar包的两种方式

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

作者头像
FunTester
发布2019-08-27 14:33:36
1.5K0
发布2019-08-27 14:33:36
举报
文章被收录于专栏:FunTesterFunTester

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

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

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

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

代码语言:javascript
复制
buildscript {
    ext {
        springBootVersion = '1.5.13.RELEASE'
    }
    repositories {
        mavenLocal()
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.fission.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenLocal()
    mavenCentral()
}
def jarversion = "api_test_najm-1.0-SNAPSHOT.jar"
def path = getPath2(jarversion)

def getPath() {
    def local;
    File file1 = new File("/Users/Vicky/Documents/workspace/api_test_najm/build/libs/api_test_najm-1.0-SNAPSHOT.jar")
    File file2 = new File("/go/jar/api_test_najm-1.0-SNAPSHOT.jar")
    if (file1.exists()) {
        local = file1.getAbsoluteFile()
    } else if (file2.exists()) {
        local = file2.getAbsoluteFile()
    }
    println local
    return local
}

def getPath2(String v) {
    def jarpath = new File("").getAbsolutePath() + "/long/" + v
    if (new File(jarpath).exists()) return jarpath
    def url = new URL("http://**.***.**.**:****/go/jar/" + v)
    def out = new FileOutputStream(jarpath)
    out << url.newInputStream()
    return jarpath
}


dependencies {
    runtime('org.springframework.boot:spring-boot-devtools')
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile "org.springframework.boot:spring-boot-starter-thymeleaf"
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.0'
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.8.0-beta2'
    compile files(path)
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档