springboot基于bootJar的jar和resources分离,gradle打包配置

在项目根目录build.gradle中设置:

configure(allprojects) { project ->
// 将依赖包复制到lib目录
    task copyBootJar(type: Copy, dependsOn: ['jar']) {
        // 分组到build
        group "build"
        from configurations.api {
            canBeResolved = true
        }
        // 清除现有的lib目录
        delete "$buildDir/libs/lib"
        from configurations.getByName('runtimeClasspath')
        into "$buildDir/libs/lib"
    }
    
    // 拷贝resources资源文件
    task copyBootResources(type: Copy, dependsOn: 'copyBootJar') {
        // 分组到build
        group "build"
        // 清除现有的lib目录
        delete "$buildDir/libs/resources"

        from fileTree(dir: 'src/main/resources')
        filteringCharset = 'UTF-8'
        into "$buildDir/libs/resources"
    }
    
    // 配置bootJar进行打包
    tasks.named("bootJar") {
        // lib目录的清除和复制任务
        dependsOn copyBootJar
        dependsOn copyBootResources
        
        def libStr = ''
        // configurations 只能放入任务中
        doFirst() {
            manifest {
                if (configurations.getByName('runtimeClasspath').isCanBeResolved()) {
                    // 获取运行时jar包
                    libStr = configurations.getByName('runtimeClasspath').getFiles().sort().collect { "lib/$it.name" }.join(' ') + " resources/"
                    // println(libStr)
                }
                attributes(
                        'Implementation': DEVELOPER_NAME,
                        'Specification-Version': DEVELOPER_NAME,
                        'Implementation-Vendor': DEVELOPER_ID,
                        'Implementation-ProductID': project.name,
                        'Compile-DateTime': new Date().format('yyyy-MM-dd HH:mm:ss'),
                        'Compile-User': DEVELOPER_NAME,
                        'Class-Path': "$libStr"
                )
                
            }
        }
        mainClass = "${MainClassName}"
        
        // 排除所有的jar和resources(jar和resources分离需打开)
        excludes = ["*.jar","*.properties","*.xml","*.yml","mybatis/","i18n/"]
      
    }

}

你可能感兴趣的:(jar,java,spring,boot,gradle)