您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

gradle的dependsOn怎么传参

gradle的dependsOn怎么传参

我的springboot是用gradle来构建。

现在想准备2个构建方式:一个是全项目打包为一个jar;一个是排除依赖包到lib文件夹里,打包一个轻量的jar。

// 全项目打包为1个jar
bootJar {
    archiveFileName = 'my-project.jar'
    excludes = ["**/application-ex.yaml"]
}

// 排除jar的打包方式
task bootJarWithOutJar {
    dependsOn bootJar {
        // 排除所有的jar
        excludes = ["*.jar", "**/application-ex.yaml"]

        // 指定依赖包的路径
        manifest {
            attributes "Manifest-Version": 1.0,
                    'Class-Path': project.configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
        }
    }

    // 迁移依赖包到lib文件夹里
    dependsOn copyJar
}

现在问题是,如果写了bootJarWithOutJar这个task,就会导致执行bootJar,也会以排除jar的打包方式打包。个人感觉,是bootJarWithOutJar里面的内容,特别是dependsOn bootJar{}这句,污染了bootJar

后来,又另外换了一种方式写,虽然是不污染了,但是打出来的jar大小不对,启动不了项目。

// 排除jar的打包方式
task bootJarWithOutJar(type: org.springframework.boot.gradle.tasks.bundling.BootJar) {

    // 排除所有的jar
    excludes = ["*.jar", "**/application-ex.yaml"]

    // 指定依赖包的路径
    manifest {
        attributes "Manifest-Version": 1.0,
                'Class-Path': project.configurations.compileClasspath.files.collect { "lib/$it.name" }.join(' ')
    }
    
    dependsOn copyJar
}

求大神指点。

gradle 2022/2/18 19:31:45 有539人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶