gradle项目离线打包

因交付客户源代码,不能连接公司maven仓库,需要进行离线打包,需要进行一些调整,将过程记录下来,防止重复踩坑:

1、工程中创建lib目录(和build.gradle文件同级);
2、通过在线方式生成完整的jar包,解压jar包,将其中的BOOT-INF下的ib中的jar包全部拷贝到工程下的lib目录;
3、修改gradle打包文件,将仓库地址修改为本地lib目录,依赖全部改为依赖本地目录

由于build.gradle中依赖了基础的base.gradle文件,其中涉及到远程仓库及插件方面的地址,需要进行改造:

buildscript {
    repositories {
        maven{
            url  uri('file:./lib')
        }
    }
    dependencies {
        classpath fileTree(includes:['*.jar'], dir:'lib')
        /*classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE"
        classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:1.5.2"
        classpath "io.franzbecker:gradle-lombok:1.14"*/
    }
}

apply plugin: org.springframework.boot.gradle.plugin.SpringBootPlugin
apply plugin: com.gorylenko.GitPropertiesPlugin
apply plugin: io.franzbecker.gradle.lombok.LombokPlugin
apply plugin: 'java'
apply plugin: 'idea'
apply plugin:'groovy'
apply plugin: 'eclipse'
apply plugin: 'jacoco'
jacoco{
    toolVersion = "0.8.2"
}
repositories {
    maven{
        url  uri('file:lib')
    }
}
……

build.gradle文件:

apply from: 'base.gradle'

group = 'com.xxxx.xxxx'
version = '1.0.0'

configurations.all {
    // check for updates every build
    resolutionStrategy.cacheChangingModulesFor 10, 'seconds'
}

dependencies {
   compile fileTree(dir: 'lib', include: '*.jar')
}

4、下载plugin插件对应的依赖包。这一步是主要踩坑的地方,本地lib依赖的方式不会主动去拉取依赖包,因此需要手动下载。
分别在如下两个网站去查找jar包依赖关系:
(1)https://search.maven.org
(2)https://mvnrepository.com
例如,对于org.springframework.boot.gradle.plugin.SpringBootPlugin,通过原来的classpath引用中的GAV进行搜索:
gradle项目离线打包
在搜索结果中查看pom文件里面的dependency,将其中的依赖按相同的方式搜索,然后下载jar包,放到lib目录,直到不再提示找不到class的错误。

5、lombok特殊处理,此处也是一个踩坑之处,项目中程序编译时候使用的lombok和plugin中的版本不同且有一定对应关系。
(1)首先需要下载和plugin对应的lombok对应版本,可以去第4步里面的两个网站去查询下载;
(2)然后需要将jar安装GAV的目录结果保存,如:org\projectlombok\lombok\1.16.20
在lib下创建对应目录,将jar文件和pom文件都拷贝到org\projectlombok\lombok\1.16.20目录

6、执行打包命令进行打包即可,例如:gradle build -x test

上一篇:maven和gradle环境变量配置及idea相关的设置


下一篇:Mac 系统idea gradle 跳过测试