{"id":16179029,"url":"https://github.com/amitmisra16/gradle-multi-module-project","last_synced_at":"2025-03-19T01:30:53.139Z","repository":{"id":68997380,"uuid":"310127885","full_name":"amitmisra16/gradle-multi-module-project","owner":"amitmisra16","description":"Springboot 2.x with Gradle 6.x multi-module setup using conventions","archived":false,"fork":false,"pushed_at":"2020-11-04T22:46:20.000Z","size":64,"stargazers_count":8,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-28T13:46:40.618Z","etag":null,"topics":["conventions","gradle","multimodule","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amitmisra16.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-04T22:04:22.000Z","updated_at":"2024-06-29T18:00:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"6a0fd302-c039-4965-accd-43d9cce375f8","html_url":"https://github.com/amitmisra16/gradle-multi-module-project","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amitmisra16%2Fgradle-multi-module-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amitmisra16%2Fgradle-multi-module-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amitmisra16%2Fgradle-multi-module-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amitmisra16%2Fgradle-multi-module-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amitmisra16","download_url":"https://codeload.github.com/amitmisra16/gradle-multi-module-project/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243958073,"owners_count":20374789,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conventions","gradle","multimodule","spring-boot"],"created_at":"2024-10-10T05:25:13.822Z","updated_at":"2025-03-19T01:30:52.859Z","avatar_url":"https://github.com/amitmisra16.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Springboot with Gradle multi module project setup\n\nSetup project using `gradle init` for the initial setup.\n\n.Ensure latest gradle is available in current shell\n[source, bash]\n----\n\n$ sdk use gradle 6.7\n\nUsing gradle version 6.7 in this shell.\n\n$ gradle -v\n\n------------------------------------------------------------\nGradle 6.7\n------------------------------------------------------------\n\nBuild time:   2020-10-14 16:13:12 UTC\nRevision:     312ba9e0f4f8a02d01854d1ed743b79ed996dfd3\n\nKotlin:       1.3.72\nGroovy:       2.5.12\nAnt:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020\nJVM:          1.8.0_265 (Oracle Corporation 25.265-b01)\nOS:           Linux 5.4.0-52-generic amd64\n\n----\n\n.Check JDK version\n[source,bash]\n----\n$ java -version\nopenjdk version \"1.8.0_265\"\nOpenJDK Runtime Environment (build 1.8.0_265-b01)\nOpenJDK 64-Bit Server VM (build 25.265-b01, mixed mode)\n----\n\n.Using gradle init for generating multi-module folder structure\n[source,bash]\n----\n$ gradle init\n\nSelect type of project to generate:\n  1: basic\n  2: application\n  3: library\n  4: Gradle plugin\nEnter selection (default: basic) [1..4] 2\n\nSelect implementation language:\n  1: C++\n  2: Groovy\n  3: Java\n  4: Kotlin\n  5: Scala\n  6: Swift\nEnter selection (default: Java) [1..6] 3\n\nSplit functionality across multiple subprojects?:\n  1: no - only one application project\n  2: yes - application and library projects\nEnter selection (default: no - only one application project) [1..2] 2\n\nSelect build script DSL:\n  1: Groovy\n  2: Kotlin\nEnter selection (default: Groovy) [1..2] 1\n\nProject name (default: gradle-multi-module-project):\nSource package (default: gradle.multi.module.project):\n\n\u003e Task :init\nGet more help with your project: https://docs.gradle.org/6.7/samples/sample_building_java_applications_multi_project.html\n\nBUILD SUCCESSFUL in 27s\n2 actionable tasks: 2 executed\n----\n\n.Checking multi-module project structure\n[source,bash]\n----\n$ ./gradlew -q projects\n\n------------------------------------------------------------\nRoot project\n------------------------------------------------------------\n\nRoot project 'gradle-multi-module-project'\n+--- Project ':app'\n+--- Project ':list'\n\\--- Project ':utilities'\n\nTo see a list of the tasks of a project, run gradlew \u003cproject-path\u003e:tasks\nFor example, try running gradlew :app:tasks\n----\n\n.Executing gradle build\n[source,bash]\n----\n$ ./gradlew build\n\nBUILD SUCCESSFUL in 27s\n10 actionable tasks: 10 executed\n----\n\n.Add springboot plugin and dependency management plugin dependencies to buildscr/build.gradle\n[source,groovy]\n----\ndependencies {\n    implementation('org.springframework.boot:spring-boot-gradle-plugin:2.3.3.RELEASE')\n    implementation('io.spring.gradle:dependency-management-plugin:1.0.8.RELEASE')\n}\n----\n\n.Adding springboot and dependency manager plugins to java application convention script\n[source,groovy]\n----\nplugins {\n    // Apply the common convention plugin for shared build configuration between library and application projects.\n    id 'gradle.multi.module.project.java-common-conventions'\n    // Apply the application plugin to add support for building a CLI application in Java.\n    // id 'application'\n    // Overriding application plugin with springboot gradle plugin\n    id 'org.springframework.boot'\n\tid 'io.spring.dependency-management'\n}\n----\n\n.Adding springboot application annotation to App.java\n[source,java]\n----\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n@SpringBootApplication\npublic class App {\n    public static void main(String[] args) {\n        LinkedList tokens;\n        tokens = split(getMessage());\n        System.out.println(join(tokens));\n    }\n}\n----\n\n.Using application convention for defining springboot and Junit dependencies\n[source,groovy]\n----\ndependencies {\n    implementation 'org.springframework.boot:spring-boot-starter-web'\n\ttestImplementation('org.springframework.boot:spring-boot-starter-test') {\n\t\texclude group: 'org.junit.vintage', module: 'junit-vintage-engine'\n\t}\n}\n\nbootJar { \n    enabled = true\n}\n----\n\n.Gradle build for multi-module projects post convention and build.gradle changes\n[source,bash]\n----\n\n# Running springboot application\n\n$ ./gradlew clean build \u0026\u0026 ./gradlew :app:bootRun\n\nBUILD SUCCESSFUL in 6s\n13 actionable tasks: 13 executed\n\n\u003e Task :app:bootRun\nHello World!\n\nBUILD SUCCESSFUL in 1s\n6 actionable tasks: 1 executed, 5 up-to-date\n\n----","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famitmisra16%2Fgradle-multi-module-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famitmisra16%2Fgradle-multi-module-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famitmisra16%2Fgradle-multi-module-project/lists"}