欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springboot+gradle 构建多模块项目的步骤

程序员文章站 2023-12-16 15:51:52
springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经验进行总结与归纳。 1.创建项...

springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经验进行总结与归纳。

1.创建项目

首先安装java和gradle,本文选用的java版本为1.8.0_40,gradle版本为2.10,安装过程本文不再赘述。

其次创建项目,名称为 springboot-mm:

mkdir springboot-mm 
cd springboot-mm 
gradle init

springboot+gradle 构建多模块项目的步骤

此时的项目结构如下:

springboot+gradle 构建多模块项目的步骤

接下来,创建多个模块,这里以web和modules为例,先创建相关的目录,

linux:

mkdir -p web/src/main/{java,resources} web/src/test/{java,resource}
mkdir -p modules/src/main/{java,resources} modules/src/test/{java,resource}

windows:

mkdir web\src\main\java,web\src\main\resource,web\src\test\java,web\src\test\resource
mkdir modules\src\main\java,modules\src\main\resource,modules\src\test\java,modules\src\test\resource

此时的目录结构如下:

springboot+gradle 构建多模块项目的步骤

2.修改配置

首先修改根目录下的 settings.gradle 文件,引入子模块:

include 'web','modules' 

其次修改根目录下的 build.gradle:

// 所有子项目的通用配置
subprojects { 
  apply plugin: 'java'
  apply plugin: 'idea'

  version = '1.0.0' 

  // jvm 版本号要求
  sourcecompatibility = 1.8
  targetcompatibility = 1.8

  // java编译的时候缺省状态下会因为中文字符而失败
  [compilejava,compiletestjava,javadoc]*.options*.encoding = 'utf-8'

  repositories {
    mavenlocal()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
    mavencentral()
    jcenter()
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
    maven { url 'http://maven.springframework.org/release' }
    maven { url 'http://maven.springframework.org/milestone' }
  }

  jar {
    manifest {
      attributes("implementation-title": "gradle")
    }
  }

  // 显示当前项目下所有用于 compile 的 jar.
  task listjars(description: 'display all compile jars.') << {
    configurations.compile.each { file file -> println file.name }
  }

  gradle.projectsevaluated {
    tasks.withtype(javacompile) {
      options.compilerargs << "-xlint:unchecked" << "-xlint:deprecation"
    }
  }
}

接下来,使用intellij (使用版本为2016.3)导入项目,导入成功后,应该可见如下显示:

springboot+gradle 构建多模块项目的步骤

添加 web/build.gradle 文件并修改,来定义 web模块的依赖:

buildscript {
  repositories {
    mavenlocal()
    maven { url "http://maven.aliyun.com/nexus/content/groups/public" }
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
    jcenter()
  }

  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.5.release")
  }
}

apply plugin: 'org.springframework.boot'

archivesbasename = 'web'

ext {
  springbootvar = '1.4.5.release'
}

dependencies {
  compile project(':modules')

  // spring boot
  compile "org.springframework.boot:spring-boot-starter-web:$springbootvar"

  testcompile "org.springframework.boot:spring-boot-starter-test:$springbootvar"
}

添加 modules/build.gradle 文件,本例中modules是web的依赖模块,通常可以将类似orm,支付,认证等功能分别放到不同的modules中,这样可以降低程序的耦合性,便于业务的扩展。读者可根据自身项目要求,对modules/build.gradle进行修改,但需要在modules/build.gradle,加入以下配置:

bootrepackage {
  enabled = false
}

具体原因,请参考,此处

3.添加测试代码

添加web\src\main\java\com\formularoom\application.java,示例代码如下

@componentscan( basepackages = {"com.formularoom"})
@enableautoconfiguration
public class application extends springbootservletinitializer implements embeddedservletcontainercustomizer {
  public static void main(string args[]) {
    springapplication.run(application.class, args);
  }

  @override
  public void customize(configurableembeddedservletcontainer container) {
    container.setport(8081);
  }
}

添加web\src\main\java\com\formularoom\controller\test1.java,

@controller
public class test1 {

  @requestmapping(value = "/test1", method = requestmethod.get)
  @responsebody
  public string test1() {
    return "spring boot multiple modules test";
  }
}

使用浏览器访问http://127.0.0.1:8081/test1 , 显示如下:

springboot+gradle 构建多模块项目的步骤

完整的示例代码,可从此处 获取。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: