这篇文章给大家介绍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多模块项目就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/itsaysay/blog/3095846