gradle多模块依赖管理最佳实践

本文介绍了如何在Gradle中优雅地管理多模块项目的依赖,包括使用buildSrc定义插件、统一第三方依赖版本、依赖模块的配置以及引入Optional依赖。重点讲解了SofastModulePlugin在项目中的应用和JavaConventionsPlugin对编码规范的设置。

多模块项目依赖管理

依赖管理是项目开发过程中必不可少的操作,在gradle如何优雅的管理多个模块依赖是一个非常值得探讨的问题,本文总结了最佳管理的方式,如 统一三方依赖版本,dependencies

定义子模块

rootProject.name = 'project'
include("dependencies")
include("common") 
include("web") 
include("domain") 
include("service") 

使用buildSrc定义插件

plugins {
    id 'java-gradle-plugin'
    id "java"
    id "groovy"
}

description = "sofast dependency manager"
group 'cc.sofast.dependency'
version '1.0.0'

repositories {
    mavenLocal()
    mavenCentral()
    gradlePluginPortal()
    maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    maven { url 'https://repo.spring.io/milestone' }
}

dependencies {
    implementation('org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.5')
    implementation('io.spring.gradle:dependency-management-plugin:1.1.3')
}

gradlePlugin {
    plugins {
        version {
            id = 'sofast.module.plugin'
            implementationClass = 'cc.sofastframework.gradle.SofastModulePlugin'
            displayName = "Dependency Manager Plugin"
            description = "Manage Dependent Versions"
        }
    }
}

SofastModulePlugin

public class SofastModulePlugin implements Plugin<Project> {
   
   

    @Override
    public void apply(Project project) {
   
   
        System.out.println("Sofast Dependency Manager plugin.");

        //java 插件
        project.getPlugins().apply(JavaPlugin.class);
        project.getPlugins().apply(JavaBasePlugin.class);

        //springboot
        Object springBootPluginEnable = project.getProperties().get("springBootPluginEnabled");
        if (Boolean.valueOf(String.valueOf(springBootPluginEnable)).equals(Boolean.TRUE)) {
   
   
            System.out.println("enabled SpringBootPlugin and DependencyManagementPlugin.");
            project.getPlugins().apply(SpringBootPlugin.class);
            project.getPlugins().apply(DependencyManagementPlugin.class);
        }

        project.getPlugins().apply(JavaConventionsPlugin.class);

        //依赖仓库
        project.getRepositories().mavenLocal();
        project.getRepositories().mavenCentral();
        project.getRepositories().maven(mavenArtifactRepository -> mavenArtifactRepository.setUrl("https://maven.aliyun.com/nexus/content/groups/public/"));
        project.getRepositories().maven(mavenArtifactRepository -> mavenArtifactRepository
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值