首页 > 其他分享 >gradle多模块项目打包依赖拆分

gradle多模块项目打包依赖拆分

时间:2022-08-30 22:37:39浏览次数:69  
标签:src 拆分 jar kts boogle build 模块 gradle

一、目录结构

.
├── boogle-common
│   ├── build.gradle.kts
│   └── src
├── boogle-core
│   ├── build.gradle.kts
│   └── src
├── boogle-generator
│   ├── build.gradle.kts
│   └── src
├── boogle-logging
│   ├── build.gradle.kts
│   └── src
├── boogle-quartz
│   ├── build.gradle.kts
│   └── src
├── boogle-system
│   ├── build.gradle.kts
│   └── src
├── boogle-web-starter
│   ├── build.gradle.kts
│   └── src
├── buildSrc
│   ├── build
│   ├── build.gradle.kts
│   └── src
│       └── main
│           └── kotlin
│               └── org.wm.java-conventions.gradle.kts
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts

二、buildSrc/src/main/kotlin/org.wm.java-conventions.gradle.kts配置

/*
 * This file was generated by the Gradle 'init' task.
 */

plugins {
    `java-library`
    `maven-publish`
    id("org.springframework.boot")
}

apply(plugin = "io.spring.dependency-management")

tasks.named<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
    mainClass.set("com.xqx.ApplicationRun")
}

repositories {
    mavenLocal()
    flatDir {
        dirs("lib")
    }
    maven {
        url = uri("https://maven.aliyun.com/repository/public/")
    }
    maven {
        url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
    }

    maven {
        url = uri("https://repo.jenkins-ci.org/releases")
    }

    maven {
        url = uri("https://repo.maven.apache.org/maven2/")
    }
}

dependencies {
    ...
}

group = "com.xqx"
version = "2022.05.09"
java.sourceCompatibility = JavaVersion.VERSION_17

publishing {
    publications.create<MavenPublication>("maven") {
        from(components["java"])
    }
}

tasks.withType<JavaCompile>() {
    options.encoding = "UTF-8"
}

三、boogle-web-starter/build.gradle.kts配置(入口模块)

plugins {
    id("com.xqx.java-conventions")
}

tasks.register<Copy>("copyJar")

// 复制jar依赖包
tasks.named<Copy>("copyJar") {
    delete("$buildDir/libs/lib")
    from(configurations.runtimeClasspath).into("$buildDir/libs/lib")
}

// 打包时排除其他依赖jar
tasks.named<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
    setExcludes(listOf("*.jar"))
    dependsOn("copyJar")
    manifest {
    // 指定Class-Path,运行时不用在命令行指定loader.path
        attributes(
            "Class-Path" to configurations.runtimeClasspath.get().files.map { "lib/${it.name}" }.joinToString(" ")
        )
    }
}

dependencies {
    implementation(project(":quartz"))
    implementation(project(":generator"))
    implementation(project(":workflow"))
    implementation(project(":system"))
    implementation(project(":archives"))
    implementation(project(":tools"))
}
description = "entrance-web"

四、build

使用bootJar打包,将会在build/lib下存放外部依赖包,

五、存在问题

使用这种方式打包后启动Jar包里依赖的其他模块的依赖jar包是*-plain.jar,并不包含该模块自己的依赖类,部署的时候如果只是更改了模块代码,直接替换module-plain.jar即可,如果添加或删除了外部依赖,则需要将外部依赖的jar手动复制。

标签:src,拆分,jar,kts,boogle,build,模块,gradle
From: https://www.cnblogs.com/yourblog/p/16641093.html

相关文章

  • Python-常用内置模块
    常用内置模块数学计算模块math函数说明ceil(x)返回大于或等于x的最小整数floor(x)返回小于或等于x的最大整数sqrt(x)返回x的平方根pow(x,y)返......
  • Idea Gradle Sync Fiald
    Idea的报错没有截图,下次再放吧。Idea的Sync报错是一串乱码,网上找了许多的解释,大部分说的是各种配置'-Dfile.encoding=UTF-8',但是效果都很不理想。最后是查询到,去看g......
  • 兼容树莓派引脚定义,适配多种模块--米尔百变STM32MP1开发板演示
    大家好,我是米尔的工程师,今天给大家带来一款全新的米尔板卡标杆产品:MYD-YA15XC-T。今天的文章将分成两部分来介绍这块基于STM32MP1处理器开发的板卡。一、百变开发板MYD-Y......
  • gradle
    安装aptinstallgradlegradle-v编译gradleclean打包gradlebuild--------------手动安装gradlewgethttps://services.gradle.org/d......
  • Jenkins+SpringCloud(多模块)+Vue项目详细配置
    一、Jenkins安装及所需插件安装   安装过程略。   我这用到工具包括JDK、Git、Maven、NodeJS:可以选择自行在服务器安装,也可以通过Jenkins自动安装,位置在系统......
  • 13模块化编程
    1<!doctypehtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metaname="viewport"6content="width=device-width,user-sca......
  • List集合拆分为多个List
    publicstatic<T>List<List<T>>split(List<T>resList,intsubListLength){if(CollectionUtils.isEmpty(resList)||subListLength<=0){......
  • python3 常用内建模块
    datetime:处理日期和时间的标准库 获取指定日期和时间 str转换为datetimefromdatetimeimportdatetimecday=datetime.strptime('2015-6-118:19:59','%Y-%m-%d%H:......
  • SAP FICO模块 KS02保存增强校验、KS01新增页签
    1、KS02修改保存增强点:SMOD  COOMKS022、KS01、KS02、KS03新增页签或字段增强:SMOD COOMKS01 1、CI_CSKS​,并在结构体中分配自定义的用户字段,字段名称不要超过1......
  • Modbus485转Profinet网关连接水表模块配置案例
     本案例控制的是Modbus485水表模块。系统主PLC选用西门子CPU,通过Modbus转Profinet网关采集水表模块通讯数据。 1、首先创建新项目文件; 2、导入GSD文件。将小疆......