Gradle多模块项目搭建完整教程,模块互相依赖,基于springboot开发

news2024/11/26 12:31:56

1.父项目创建,【com.fdw.hibernate】

  

 2.子项目创建,【com.fdw.study】【com.fdw.parent】

 3.最终结构目录

 

4. 父工程build.gradle

plugins {
    id 'java'
}

allprojects {
    // 指定需要的插件
    // 指定语言
    apply plugin: 'java'
    //指定编辑器
    apply plugin: 'idea'
    // 配置项目信息
    group 'com.fdw'
    version '1.0.0'

    // 配置仓库
    repositories {
        maven {
            url 'https://maven.aliyun.com/repository/gradle-plugin'
        }
        maven {
            url "https://maven.aliyun.com/nexus/content/groups/public/"
        }
        mavenCentral()
        gradlePluginPortal()
        mavenLocal()
    }

}

// 配置子工程
subprojects {
    apply plugin: 'java'
    // 指定编译版本
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    // 配置字符编码
    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }

    //配置子模块依赖
    dependencies {
        // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
        implementation 'org.springframework.boot:spring-boot-starter-web:2.6.6'
        // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter
        implementation 'org.springframework.boot:spring-boot-starter:2.6.3'
        implementation 'org.projectlombok:lombok:1.18.12'
        annotationProcessor 'org.projectlombok:lombok:1.18.12'
    }

}

tasks.named('test') {
    useJUnitPlatform()
}

allprojects代码块:该代码块中的配置将适用于所有项目,包括根项目和所有子项目。可以在其中定义共享的配置和依赖项

subprojects代码块:该代码块中的配置将只应用于子项目,而不包括根项目。可以在其中设置子项目独有的配置或覆盖allprojects中的配置 ,子工程能自动继承在这里配置的依赖

5. 父工程setting.gradle

rootProject.name = "hibbernatestudy"
include 'study','parent'

建立父子关系(很关键)

6.study项目的build.gradle文件

dependencies {

}

7.parent项目的build.gradle文件,parent项目依赖study项目

dependencies {
    implementation project(':study')
}

8.parent项目配置后才能使用study项目的bean

现在这样直接启动parent项目的话,study里的Bean是无法通过@Autowired注解注入来被parent使用的,原因在于,虽然parent依赖了study项目,但项目启动时并未去加载study中的类,需要如下配置:

1.在study项目src>>main>>java目录下新建配置类DefultConfig.java,@ComponentScan选择所有要扫描注入的包

package com.fdw.study.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.fdw.study.controller")
public class DefultConfig {
}

2.在study项目src>>main>>resources目录下新建META-INF文件夹

3.在META-INF文件夹下新建spring.factories文件,填写步骤一中的配置类全限定名

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.fdw.study.config.DefultConfig

9.在study项目中写一个controller接口类

package com.fdw.study.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "hello world !";
    }

}

10.parent项目加上启动类,启动parent

package com.fdw.parent;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ParentApplication {

    @Autowired
    public static void main(String[] args) {
        SpringApplication.run(ParentApplication.class, args
        );
    }

}

application.yml配置端口8085

  

11.结果展示

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

漏洞复现Tomcat系列弱口令、CVE-2017-12615、CVE-2020-1938

文章目录 提提神tomcat8 弱口令介绍:复现: Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)介绍:复现: Tomcat AJP 文件包含漏洞(CVE-2020-1938)介绍:复现: 提…

c#/c++ 通过系统api监视文件变化的问题

再分享个比较经典的案例,在很多场景下,我们都要去监视某个文件夹下的文件变化,在创建、修改或删除的时候触发一些行为。众所周知,c#有个实现类叫FileSystemWatcher,可以用来监视目录包括子目录下文件的变化&#xff0c…

亚马逊云科技,定义了生成式AI的生产力

众所周知,要把大模型转化为生产力,AI模型、算力和数据会是难以逾越的门槛。新的目标已经出现,我们是否有了足够强大的AI基础设施?在6月28日上海举行的峰会上,亚马逊云科技展示了这样的能力。 从掀起AI画图热潮的Stabil…

【深度学习笔记】深层神经网络

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下: 神经网络和…

select 框添加树结构(todu)

1. 案例: 2. 代码 下班了,明天写

蓝桥杯专题-真题版含答案-【马虎的算式】【振兴中华】【黄金连分数】【打印十字图】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

day27-MySQL拓展

0目录 第六章 MySQL拓展 1.MySQL拓展 1.1 事务定义:事务就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所有sql都将被取消执行。 1.2 事务ACID原则 (1)原子性 一个事务要么全部提交成功,要么全部…

「深度学习之优化算法」(九)群搜索算法

1. 群搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   群搜索算法(Group Search Optimizer)是一种基于发现者,跟随者,游荡者模型而产生的算法。算法模型较为复杂,提出时间也不长,对于其的深度研究相对较少,但也有一定的应用研究。   在群搜索算法…

【雕爷学编程】Arduino动手做(150)---旋转角度传感器模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

【IDE 小程序】小程序控制台 不打印 console.log问题

小程序控制台 不打印 console.log问题 全局搜索compress.drop_console(一般在config文件中),设置为false,再重新打开小程序即可

4、架构:Canvas VS DOM

在可视化搭建的低代码平台中,设计器是一个非常关键的模块,可以帮助用户通过拖拽、配置等方式快速搭建应用界面。 在技术选型方面,目前市面上主流的设计器技术包括基于 HTML/CSS/JavaScript 的 Web 设计器。 在渲染方案方面,主流…

TiDB(6):数据迁移-TiDB Lightning

1 TiDB Lightning介绍 TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具,目前支持 Mydumper 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning: 迅速导入大量新数据。 备份恢复所有数据。 TiDB Lightning 主要包含两个部分…

NSS [SWPUCTF 2021 新生赛]jicao

NSS [SWPUCTF 2021 新生赛]jicao 先看题目,要求我们post传参一个id。然后get一个变量叫json,并且通过json_decode()对一串JSON进行解码 payload: GET: ?json{"x":"wllm"} POST:idwllmNB

java中处理异常规范

java处理异常规范 文章目录 java处理异常规范一、尽量不要使用e.printStackTrace(),而是使用log打印,并记录exception二、不要用一个Exception捕捉所有可能的异常三、使用finally关闭流资源或者直接使用try-with-resource四、捕获异常与抛出异常必须是完全匹配,或者…

Spring Boot 中的 Redis 分布式锁

Spring Boot 中的 Redis 分布式锁 在分布式系统中,多个进程同时访问共享资源时,很容易出现并发问题。为了避免这些问题,我们可以使用分布式锁来保证共享资源的独占性。Redis 是一款非常流行的分布式缓存,它也提供了分布式锁的功能…

react - TS

TypeScript TypeScript 简称『TS』,是微软开发的一个开源的编程语言。 一、TS 特点 TS 主要有如下几个特点: 完全兼容 JavaScript,是 JavaScript 的超集 引入类型系统,可以尽早的定位错误位置, 帮助提升开发效率 let obj {a:1,b:2....}o…

四氯化硅铝的活性离子蚀刻

引言 铝膜广泛用于集成电路中的互连线。随着电路的集成规模和密度变得越来越大,有必要将互连线和间隔的宽度减小到几乎薄膜厚度。为了实现这一点,已经开发了具有定向蚀刻能力的平行平面电极型等离子体蚀刻。这被称为反应离子蚀刻,因为它采用…

基于免疫优化算法的物流配送中心选址规划研究(Matlab实现)

目录 1 概述 2 物流配送中心选址规划研究 3 Matlab代码 4 结果 1 概述 影响物流配送中心选址的因素有很多,精确选址优化问题亟待解决。通过充分考虑货物的配送时间,将免疫算法加入其中,介绍了物流配送选址模型的构建以及免疫算法实现的相关步骤,最后利用matlab软件进行分析,提出…

手机端三维人体建模软件-易模,为虚拟现实、游戏开发带来新体验

三维人体建模是一种高级的数字技术,用于将人体的形态、肌肉、骨骼等三维信息转化为数字模型。这项技术涵盖了计算机图像处理、计算机辅助设计等领域,具有广泛的应用价值。通过三维人体建模,可以更好地理解人体的结构和功能,对于医…

弗迪科技携手纷享销客共建CRM系统,数智化升级加速“灯塔工厂”征程

当前,全球新一轮科技革命正和产业升级融合发展,数字化技术成为各行各业升级发展的重要推动力。 自2018年起,世界经济论坛与麦肯锡咨询公司发起“灯塔工厂”项目,全球严选制造业数字化转型典范作为“数字化制造”和“全球化4.0”的…