赞
踩
本人在学习Gradle的期间,发现大部分关于gradle项目的构建的文章,不是直接使用spring initializr自动构建,就是搭建项目的配置过于复杂且没有相应的说明,对于刚刚接触gradle的新人而言,会产生很多困惑,想要去更改配置却无从下手。
故而,在这篇文章中,本人使用Idea搭建了一个简易的gradle + springboot的项目,并提供项目的源码,希望能帮助到初次接触gradle的童鞋。
详情参考:https://blog.csdn.net/scropio0zry/article/details/100145818
Gradle项目由一个单一的构建文件 build.gradle 和一个源代码树 src 构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。
多项目构建的结构特征:
https://gitee.com/scorpio0zry/gradle-demo
首先,建立根项目 web-test-demo
选择File - New – Project,选择Gradle 点击下一步
填写完 GroupId 和 ArtifactId后,点击下一步
如上图,勾选完后,点击一下步,选择项目名和位置,点击Finish,即可创建一个简单的Gradle项目
选择已经创建好的项目,右键 New – Model,按照上面方式,依次创建子组件web-test-base和web-test-service
由此,我们就可以得到一个Gradle多模块项目,如下图所示
下面首先看下根项目的settings.gradle 这是用来管理多项目的,里面包含了根项目及子项目的name,无需修改
下面将根项目中的配置文件 build.gradle 的内容清空,并复制以下内容(记得group须改写)
- //针对所有project的配置,包含根项目,除此之外还有subprojects 和 project,感兴趣的童鞋可以自行百度查阅
- allprojects {
- //创建项目时的你填写
- group 'com.ryzhang' //改写
- version '1.0-SNAPSHOT'
-
- //项目是java项目
- apply plugin: 'java'
- //项目是idea项目
- apply plugin: 'idea'
-
- //jdk版本
- sourceCompatibility = 1.8
-
- //仓库:gradle会根据从上到下的顺序依次去仓库中寻找依赖
- repositories {
- //优先从本地仓库获取
- mavenLocal()
- //从阿里云或者公司仓库获取
- maven {
- url 'http://maven.aliyun.com/nexus/content/groups/public/' //配置阿里云 或者 自己公司的仓库
- }
- //从中央仓库获取
- mavenCentral()
- }
-
- ext {
- //这里管理版本
- junitVersion = '4.12'
- commonsVesion = '3.0'
- slf4jVersion = '1.7.16'
- }
-
- //项目中所使用到的依赖,这里添加的依赖会被所有项目,包括root项目继承
- dependencies {
- testCompile("junit:junit:$junitVersion")
- compile("org.slf4j:slf4j-api:$slf4jVersion")
- //也可直接将版本写在最后 compile("org.slf4j:slf4j-api:1.7.16")
- //另外一种形式 (group + name + version) compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.16'
- }
- }
-
-
- //声明gradle脚本自身需要使用的资源
- buildscript {
- //repositories为什么要要声明两次
- //
- //buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
- //
- //而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。
- repositories {
- mavenLocal()
- maven {
- url "http://maven.aliyun.com/nexus/content/groups/public/"
- }
- }
-
- ext {
- //这里管理版本
- springbootVersion = '1.5.8.RELEASE'
- }
-
- dependencies {
- //spring-boot插件
- classpath("org.springframework.boot:spring-boot-gradle-plugin:$springbootVersion")
- }
- }
子项目base的配置文件 build.gradle 如下
- //base 所需要的依赖
- dependencies {
- compile ("org.apache.commons:commons-lang3:$commonsVesion")
- }
base项目仅是一个java项目,用来存放一些公有类及方法,而根项目中allprojects 已经声明了所有项目 均为 java项目
- //项目是java项目
- apply plugin: 'java'
- //项目是idea项目
- apply plugin: 'idea'
这里就不需要在进行声明,仅需配置base项目所需的依赖即可
子项目service的配置 build.gradle如下:
- apply plugin:'application'
- //声明spring-boot插件
- apply plugin: "spring-boot"
- //启动项
- mainClassName = "com.ryzhang.StartServer"
-
- //service项目所需依赖
- dependencies {
- compile("org.springframework.boot:spring-boot-starter-web")
- compile("org.springframework.boot:spring-boot-starter-thymeleaf")
- //依赖子项目
- compile project (":web-test-base")
- }
service项目配置了spring-boot依赖,在此声明了spring-boot插件及启动项
service项目中的启动项 StartServer 如下
- package com.ryzhang;
-
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
-
- /**
- * @author ryzhang5
- * @Package com.ryzhang
- * @date 2019/9/20 17:24
- * @Copyright
- */
- @SpringBootApplication
- public class StartServer {
- public static void main(String[] args){
- SpringApplication.run(StartServer.class);
- }
- }
这样一个简单的gradle + springboot项目便搭建好了,项目结构及依赖如下图所示
童鞋们可以根据自己的需要在对应项目中dependencies进行依赖添加,并在根项目的配置文件build.gradle的ext中实现依赖版本的管理。
点开Idea右侧Gradle,以下是常用的三个命令及介绍。当然也可以直接启动StartServer来运行程序
base项目下添加类com.ryzhang.model.Person
- package com.ryzhang.model;
-
- /**
- * @author ryzhang5
- * @Package com.ryzhang.model
- * @date 2019/9/22 11:29
- * @Copyright
- */
- public class Person {
- private String name;
- private Integer age;
-
- public Person() {
- }
-
- public Person(String name, Integer age) {
- this.name = name;
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
- }
service项目下添加 com.ryzhang.controller.TestController
- package com.ryzhang.controller;
-
- import com.ryzhang.model.Person;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- /**
- * @author ryzhang5
- * @Package com.ryzhang.controller
- * @date 2019/9/22 11:31
- * @Copyright
- */
- @Controller
- public class TestController {
-
-
- @RequestMapping("/test")
- @ResponseBody
- public Person test(){
- Person person = new Person("小明",18);
-
- return person;
- }
- }
添加service项目配置文件application.yml
- server:
- port: 8082
- context-path: /
运行项目,访问 localhost:8082/test 得到结果
PS:如同开头所言,本人刚刚接触Gradle不久,想要深入了解Gradle的话,还是要参考相关书籍以及大佬们的博客。
PS.PS:如果文章有所疏漏,还请大佬指出。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。