lesson 5 聚合项目

lesson 5 聚合项目

之前说完了很多基本的东西,现在来说说在多项目中Gradle是这么做的。
还是使用之前的示例lesson项目。
我们可以利用IDE直接创建一个module出来,不过这样就没啥意思了,既然我们刚开始学,还是自己创建吧。
创建一个web,entity文件夹,文件结构如下

.
├── build.gradle
├── entity
├── settings.gradle
└── web

接着在这两个项目中创建两个空白的build.gradle文件。基本的东西就足够了。
然后是修改配置文件了。
把根目录的settings.gradle中添加以下几行

include 'web','entity'

这样,这两个文件夹就已经被当做module加入到lesson项目中了。他们两个的基本配置就如同之前讲过的单个项目一样,如果是完全不依赖的情况,可以各自配置,完全不影响,我相信这个会比较简单,这里顺便说一下,子模块的配置也是可以在整体中配置的。
在lesson中的build.gradle中使用allprojectssubprojects配置


allprojects {

    group 'com.lesson'
    version '1.0.0'
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'

}
subprojects {
    
    apply plugin:'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    repositories {
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
    }

//	if (project.name == 'web') {	//	也可以使用这样的逻辑判断来区别不同的模块需要加载的配置
    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
// }
}

需要注意的是,all配置全部,包括父项目在内,sub只包含子项目,如果配置了相同的属性会根据最后一次执行的位置覆盖。在这两个闭包中,不可以使用plugins的闭包,同样根据依赖的传递性,插件和依赖都可以省略版本号。
说完了完全独立的情况,如果模块之间需要依赖怎么办呢。

比如web模块需要依赖entity模块。
web的配置文件中加入

dependencies{
    compile project(':entity')
}

project()是一个方法,参数是:entity,其中:表示当前项目,这样就表示在web中引入了entity,说到:也说明一下,如果在聚合项目中,存在某一个模块也是一个聚合项目时,应该怎么去配置,在settings.gradle中用下面的方式

include 'web:service','web:api'

这样的方式去引入他们就可以了。

下面展示一个完整的示例吧。
settings.gradle

rootProject.name = 'lesson'
include 'web','entity'

lesson中的build.gradle

plugins {
    id 'java'
    id 'application'
    id 'idea'
    id 'org.springframework.boot' version '2.1.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.0.RELEASE'
}


group 'com.lesson'
version '1.0.0'

repositories {
    maven {
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }
}

dependencies {
    implementation platform('io.spring.platform:platform-bom:Cairo-SR6')
}
allprojects {
    group 'com.lesson'
    version '1.0.0'
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
}
subprojects {

    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    repositories {
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
    }

    if (project.name == 'web') {
        dependencies {
            implementation 'org.springframework.boot:spring-boot-starter-web'
            testImplementation 'org.springframework.boot:spring-boot-starter-test'
        }
    }
}

web中的build.gradle

dependencies{
    compile project(':entity')
}

entity中的build.gradle没有内容
在entity中创建一个普通的对象Entity,它只有nameage属性,并重写toString()方法
然后在web中创建一个spring boot的启动类,和一个Controller,给定访问路径为/hi,返回一个Entity的对象

@GetMapping("/hi")
    public String hi() {
      Entity entity = new Entity();
      entity.setName("test");
      entity.setAge(15);
      return entity.toString();
  }

最后启动项目,访问http://localhost:8080/hi就能得到结果Entity{name='test', age=15},表明项目是OK的。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值