1. 默认打包(不带依赖)

在build.gradle中配置

jar {
    manifest {
        attributes('Main-Class': 'org.x3.server.Server')
    }

}

说明:

manifest:是配置META-INF/MANIFEST.MF文件

主要配置:
    Main-Class:主运行类

from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

作用:收集compile类依赖

打包命令:gradle jar jar包位置:build/libs

2. 打可执行包(带依赖;使用gradle原生打包方式)

注意:   此打包方式处在的问题:当项目中使用到了spring或dubbo时,此种方式会存在问题。 当项目中有spring或dubbo时,建议使用shadow插件进行打包。

jar {
    manifest {
        attributes('Main-Class': 'org.x3.server.Server')
    }

}

from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

说明:

from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }

打包时,将compile类型依赖打入jar包

打包命令:gradle jar jar包位置:build/libs

3. 打可执行包(带依赖;使用shadow插件)

该打包方式使用spring和dubbo也会存在问题。

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1"
    }
}

apply plugin: "com.github.johnrengelman.shadow"

jar {
    manifest {
        attributes('Main-Class': 'org.x3.cloud.PaasServer')
    }
}

说明:

1. 先引入shadow插件
2. 执行运行主类

打包命令:gradlew shadow jar包位置:build/libs

4. 打可执行包-终极版(shadow)-解决spring spring.schemas问题

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1"
    }
}

apply plugin: "com.github.johnrengelman.shadow"

shadowJar {
    println("shadowJar run....")
    zip64 true
    manifest {
        attributes("Main-Class": "PAAS.EPRIA.Common.Log.server.Server")
    }

    append("META-INF/spring.schemas")
    append("META-INF/spring.handlers")
}

说明:

spring每个模块都有一个spring.schemas和一个spring.handlers文件
打包时如果不进行处理,多个spring.schemas和pring.handlers会被覆盖


append:意思追加该目录的问题的文件
zip64 true:默认情况下打包时文件应该少于65535个文件,如果超过了,需要配置该属性

results matching ""

    No results matching ""