{"id":18705705,"url":"https://github.com/kuangcp/gradleintegrationmultiplemodules","last_synced_at":"2025-04-12T10:20:27.232Z","repository":{"id":124451093,"uuid":"93750048","full_name":"Kuangcp/GradleIntegrationMultipleModules","owner":"Kuangcp","description":"使用Gradle整合 JavaSE, SpringBoot 两个模块成功构建运行","archived":false,"fork":false,"pushed_at":"2019-03-17T03:34:36.000Z","size":61,"stargazers_count":7,"open_issues_count":1,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-26T05:11:23.161Z","etag":null,"topics":["gradle","java","jedis","springboot"],"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/Kuangcp.png","metadata":{"files":{"readme":"README.md","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":"2017-06-08T13:02:23.000Z","updated_at":"2022-05-24T15:37:05.000Z","dependencies_parsed_at":"2023-08-07T19:01:46.290Z","dependency_job_id":null,"html_url":"https://github.com/Kuangcp/GradleIntegrationMultipleModules","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/Kuangcp%2FGradleIntegrationMultipleModules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuangcp%2FGradleIntegrationMultipleModules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuangcp%2FGradleIntegrationMultipleModules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuangcp%2FGradleIntegrationMultipleModules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kuangcp","download_url":"https://codeload.github.com/Kuangcp/GradleIntegrationMultipleModules/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248550621,"owners_count":21122934,"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":["gradle","java","jedis","springboot"],"created_at":"2024-11-07T12:11:41.456Z","updated_at":"2025-04-12T10:20:27.196Z","avatar_url":"https://github.com/Kuangcp.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gradle构建多模块项目\n\u003e [博客地址](https://blog.csdn.net/kcp606/article/details/72934517)\n\n- 使用一致的方式设计的更干净和规范的项目: https://github.com/Kuangcp/JavaBase\n\n### 步骤\n-   新建一个gradle 空Module(不勾选java或者其他类型)，这就是整个大项目\n-   选中刚新建的Module 然后新建Module 只选java 就是se核心复用部分\n-   选中最下的依赖库（External Libraries），然后新建Springboot 的Module，选择Gradle Project 不是Gradle config，不然没有初始代码和完整目录，选择依赖之后建立成功后（后台不再有任务运行）\n-   直接将Springboot模块拖到大项目下，就成为了大项目的子文件夹\n-   修改大项目下的 setting.gradle 文件，添加 include 'Springboot模块的名字 ' 即可\n-   然后在右边 gradle工具条中删除 和大项目同级的那个Springboot （前提是你发现和se项目同级出现了Springboot项目名） 弹窗提示然后去掉main和test的勾，就不会删除对应包\n- 修改gradle构建文件： \n\n###  整个项目的`build.gradle 文件`：\n```groovy\nallprojects {\n    apply plugin: 'java'\n    group 'com.github.kuangcp'\n    version = '1.0'\n    sourceCompatibility = 1.8\n    targetCompatibility = 1.8\n}\nsubprojects {\n    ext {\n//        slf4jVersion = '1.7.7'\n        springVersion = '4.3.8.RELEASE'\n        hibernateVersion = '4.3.1.Final'\n    }\n    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'\n    repositories {\n        mavenCentral()\n    }\n    configurations {\n        //compile.exclude module: 'commons-logging'\n        all*.exclude module: 'commons-logging'\n    }\n    dependencies {\n        compile(\n                 'redis.clients:jedis:2.9.0',\n                 'org.slf4j:slf4j-api:1.7.25',\n                 'ch.qos.logback:logback-core:1.1.11',\n                 'ch.qos.logback:logback-classic:1.1.11',\n\n//                \"org.slf4j:jcl-over-slf4j:${slf4jVersion}\",\n//                \"org.slf4j:slf4j-log4j12:${slf4jVersion}\",\n                \"org.springframework:spring-context:$springVersion\",\n//                \"org.springframework:spring-orm:$springVersion\",\n//                \"org.springframework:spring-tx:$springVersion\",\n//                \"org.springframework.data:spring-data-jpa:1.5.2.RELEASE\",\n//                \"org.hibernate:hibernate-entitymanager:$hibernateVersion\",\n//                \"c3p0:c3p0:0.9.1.2\",\n                \"mysql:mysql-connector-java:5.1.35\",\n//                \"commons-fileupload:commons-fileupload:1.3.1\",\n                \"com.fasterxml.jackson.core:jackson-databind:2.3.1\"\n        )\n        testCompile(\n                \"org.springframework:spring-test:$springVersion\",\n                \"junit:junit:4.12\"\n        )\n    }\n}\nproject(':redis_core') {\n\n}\nproject(':redis_web') {\n    apply plugin: \"war\"\n    dependencies {\n        compile project(\":redis_core\")\n        compile(\n                'org.springframework.boot:spring-boot-starter-thymeleaf',\n                'org.springframework.boot:spring-boot-starter-web'\n        )\n        testCompile(\n                'org.springframework.boot:spring-boot-starter-test'\n        )\n//        providedCompile(\n//                \"javax.servlet:javax.servlet-api:3.1.0\",\n//                \"javax.servlet.jsp:jsp-api:2.2.1-b03\",\n//                \"javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1\"\n//        )\n    }\n    processResources{\n        /* 从'$projectDir/src/main/java'目录下复制文件到'WEB-INF/classes'目录下覆盖原有同名文件*/\n        from(\"$projectDir/src/main/java\")\n    }\n\n    /*自定义任务用于将当前子项目的java类打成jar包,此jar包不包含resources下的文件*/\n    def jarArchiveName=\"${project.name}-${version}.jar\"\n    task jarWithoutResources(type: Jar) {\n        from sourceSets.main.output.classesDir\n        archiveName jarArchiveName\n    }\n\n    /*重写war任务:*/\n    war {\n        dependsOn jarWithoutResources\n        /* classpath排除sourceSets.main.output.classesDir目录,加入jarWithoutResources打出来的jar包 */\n        classpath = classpath.minus(files(sourceSets.main.output.classesDir)).plus(files(\"$buildDir/$libsDirName/$jarArchiveName\"))\n    }\n    /*打印编译运行类路径*/\n    task jarPath \u003c\u003c {\n        println configurations.compile.asPath\n    }\n}\n\n/*从子项目拷贝War任务生成的压缩包到根项目的build/explodedDist目录*/\ntask explodedDist(type: Copy) {\n    into \"$buildDir/explodedDist\"\n    subprojects {\n        from tasks.withType(War)\n    }\n}\n```\n###  效果图\n\n![效果图](http://img.blog.csdn.net/20170608205441978?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2NwNjA2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)\n\n- 使用整个项目的build命令就可以把两个模块进行整合了\n- 在web模块的build/lib/下的jar直接运行，然后打开浏览器 http://localhost:8080/r/o 看到有文字输出就是构建成功了\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuangcp%2Fgradleintegrationmultiplemodules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuangcp%2Fgradleintegrationmultiplemodules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuangcp%2Fgradleintegrationmultiplemodules/lists"}