Skip to content

amitmisra16/gradle-multi-module-project

Repository files navigation

Springboot with Gradle multi module project setup

Setup project using gradle init for the initial setup.

Ensure latest gradle is available in current shell
$ sdk use gradle 6.7

Using gradle version 6.7 in this shell.

$ gradle -v

------------------------------------------------------------
Gradle 6.7
------------------------------------------------------------

Build time:   2020-10-14 16:13:12 UTC
Revision:     312ba9e0f4f8a02d01854d1ed743b79ed996dfd3

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          1.8.0_265 (Oracle Corporation 25.265-b01)
OS:           Linux 5.4.0-52-generic amd64
Check JDK version
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)
Using gradle init for generating multi-module folder structure
$ gradle init

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Scala
  6: Swift
Enter selection (default: Java) [1..6] 3

Split functionality across multiple subprojects?:
  1: no - only one application project
  2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2] 2

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Project name (default: gradle-multi-module-project):
Source package (default: gradle.multi.module.project):

> Task :init
Get more help with your project: https://docs.gradle.org/6.7/samples/sample_building_java_applications_multi_project.html

BUILD SUCCESSFUL in 27s
2 actionable tasks: 2 executed
Checking multi-module project structure
$ ./gradlew -q projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'gradle-multi-module-project'
+--- Project ':app'
+--- Project ':list'
\--- Project ':utilities'

To see a list of the tasks of a project, run gradlew <project-path>:tasks
For example, try running gradlew :app:tasks
Executing gradle build
$ ./gradlew build

BUILD SUCCESSFUL in 27s
10 actionable tasks: 10 executed
Add springboot plugin and dependency management plugin dependencies to buildscr/build.gradle
dependencies {
    implementation('org.springframework.boot:spring-boot-gradle-plugin:2.3.3.RELEASE')
    implementation('io.spring.gradle:dependency-management-plugin:1.0.8.RELEASE')
}
Adding springboot and dependency manager plugins to java application convention script
plugins {
    // Apply the common convention plugin for shared build configuration between library and application projects.
    id 'gradle.multi.module.project.java-common-conventions'
    // Apply the application plugin to add support for building a CLI application in Java.
    // id 'application'
    // Overriding application plugin with springboot gradle plugin
    id 'org.springframework.boot'
	id 'io.spring.dependency-management'
}
Adding springboot application annotation to App.java
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        LinkedList tokens;
        tokens = split(getMessage());
        System.out.println(join(tokens));
    }
}
Using application convention for defining springboot and Junit dependencies
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}

bootJar {
    enabled = true
}
Gradle build for multi-module projects post convention and build.gradle changes
# Running springboot application

$ ./gradlew clean build && ./gradlew :app:bootRun

BUILD SUCCESSFUL in 6s
13 actionable tasks: 13 executed

> Task :app:bootRun
Hello World!

BUILD SUCCESSFUL in 1s
6 actionable tasks: 1 executed, 5 up-to-date

About

Springboot 2.x with Gradle 6.x multi-module setup using conventions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages