这篇文章给大家介绍Gradle中怎么构建一个SpringBoot多模块项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1. settings.gradle
/** * rootProject.name 项目名称 * include 模块名称 */ rootProject.name = 'micro-service-framework' include 'framework-base' include 'framework-web' include 'framework-redis'
2. build.gradle
这个相当于maven中的父maven配置
buildscript { ext { //spring boot 版本 bootVersion = '2.0.6.RELEASE' } //私服地址,这个地址适用于gradle自身,比如删除,下面的springboot插件就会找不到 repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } } //springboot gradle插件配置 dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}") } } allprojects { //导入使用的插件 apply plugin: 'java' apply plugin: 'maven' //如果导入该插件,你需要指定main class,否则不能打包 //apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' //这个插件用于发布jar包到私服 apply plugin: 'maven-publish' //jdk编译版本 sourceCompatibility = 1.8 //jar包的group ,version配置 group 'net.178le.micro' version '0.0.1-SNAPSHOT' //私服地址, repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } } /** * 导入了springboot,spring cloud的pom文件,能够免去自己管理版本 * PS: 在Spring官网指导上面有另外一种配置,那种配置需要配置main class,一会说明 */ dependencyManagement { imports { mavenBom "org.springframework.boot:spring-boot-starter-parent:${bootVersion}" mavenBom "org.springframework.cloud:spring-cloud-dependencies:Finchley.SR2" } } //私服发布配置 publishing { publications { maven(MavenPublication) { //指定group/artifact/version信息,可以不填。默认使用项目group/name/version作为groupId/artifactId/version groupId = project.group artifactId = project.name version = project.version //如果是war包填写components.web,如果是jar包填写components.java from components.java //配置上传源码 artifact sourceJar { classifier "src" } } } repositories { maven { def releasesUrl = "http://你的私服ip:8081/repository/maven-releases/" def snapshotsUrl = "http://你的私服ip:8081/repository/maven-snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsUrl : releasesUrl credentials { username = 'admin' password = 'admin123' } } } } } //这里的配置对子项目生效 subprojects { dependencies { testCompile("org.springframework.boot:spring-boot-starter-test") compile("com.google.guava:guava:28.0-jre") } } //打包源码 task sourceJar(type: Jar) { from sourceSets.main.allJava }
maven publish使用
在task -> publishing 中有如下几个命令
我认为使用这两个命令就足够了
publishMavenPublicationToMavenLocal 发布项目到本地仓库
publishMavenPublicationToMavenRepository 发布项目到私服
PS:使用apply plugin: 'org.springframework.boot' build必须要指定main class
23:26:17: Executing task 'build'... > Task :framework-base:compileJava NO-SOURCE > Task :framework-base:processResources NO-SOURCE > Task :framework-base:classes UP-TO-DATE > Task :framework-base:jar SKIPPED > Task :framework-redis:compileJava UP-TO-DATE > Task :framework-redis:processResources NO-SOURCE > Task :framework-redis:classes UP-TO-DATE > Task :framework-redis:jar SKIPPED > Task :framework-web:compileJava UP-TO-DATE > Task :framework-web:processResources NO-SOURCE > Task :framework-web:classes UP-TO-DATE > Task :framework-web:bootJar FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':framework-web:bootJar'. > Main class name has not been configured and it could not be resolved * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/4.10.3/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 1s 3 actionable tasks: 1 executed, 2 up-to-date Main class name has not been configured and it could not be resolved 23:26:18: Task execution finished 'build'.
framework-web 项目 3. build.gradle
dependencies { //依赖framework-redis项目 compile project(':framework-redis') //不需要写版本 compile('org.springframework.boot:spring-boot-starter-web') //不需要写版本 compile('org.springframework.cloud:spring-cloud-starter-openfeign') }
framework-redis 项目 4. build.gradle
dependencies { //依赖framework-base compile project(':framework-base') compile('org.springframework.boot:spring-boot-starter-data-redis') }
framework-base 5. build.gradle
//做为演示没有引入任何jar包 dependencies { }
关于Gradle中怎么构建一个SpringBoot多模块项目就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。