Spring Cloud 微服务架构(一):新建项目

Spring Cloud + Spring Boot + Gradle + Kotlin +Docker

新建项目

首先打开你的IntelliJ IDEA

  • 按下图操作。
    在这里插入图片描述

  • 初始化项目
    使用Spring Initializr初始化项目,按照项目需求选择Project SDK,使用官方的项目初始化工具https://start.spring.io。选择下一步
    在这里插入图片描述

  • 选择Spring Boot的版本
    继续下一步。。。。。。。。。
    在这里插入图片描述

  • 把你的项目信息填写完整吧
    在这里插入图片描述

  • 给你的项目起个名字吧
    在这里插入图片描述

至此你的项目就新建完毕了。但是现在还有一点问题,我们希望使用kotlin语法去完成build.gradle脚本文件,但是初始化后的项目使用的是groovy的语法。

修改build.gradle

首先你必须把文件名称改成build.gradle.kts,然后按照kotlin语法将此文件内容改为如下

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "2.3.2.RELEASE" apply false
    id("io.spring.dependency-management") version "1.0.9.RELEASE" apply false
    id("com.palantir.docker") version "0.25.0" apply false
    kotlin("jvm") version "1.3.72" apply false
    kotlin("plugin.spring") version "1.3.72" apply false
}

allprojects {
    apply(plugin = "java")
    group = "com.jiasha.project"
    version = "0.0.1-SNAPSHOT"

    repositories {
        maven(url = "http://maven.aliyun.com/nexus/content/groups/public/")
        maven(url = "http://maven.aliyun.com/nexus/content/repositories/jcenter")
        mavenCentral()
    }
}

subprojects {
    apply(plugin = "org.springframework.boot")
    apply(plugin = "io.spring.dependency-management")
    apply(plugin = "org.jetbrains.kotlin.jvm")
    apply(plugin = "org.jetbrains.kotlin.plugin.spring")
    apply(plugin = "com.palantir.docker")

    tasks.withType<KotlinCompile> {
        kotlinOptions {
            freeCompilerArgs = listOf("-Xjsr305=strict")
            jvmTarget = "1.8"
        }
    }

    tasks.withType<Jar> {
        enabled = true
        project.ext["jarArchiveBaseName"] = archiveBaseName.get()
        project.ext["jarArchiveFile"] = archiveFile.get().toString()
        project.ext["jarArchiveFileName"] = archiveFileName.get()
    }
    
    dependencies {
        "implementation"(platform("org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR7"))
        "implementation"("org.springframework.boot:spring-boot-starter")
        "implementation"("org.jetbrains.kotlin:kotlin-reflect")
        "implementation"(kotlin("stdlib-jdk8"))
        "testImplementation"("org.springframework.boot:spring-boot-starter-test")
    }
}


Docker的使用

  • 上述build.gradle.kts中,在plugins中增加了id(“com.palantir.docker”) version “0.25.0” apply falsesubprojects中增加了apply(plugin = “com.palantir.docker”),再定义一个获取子项目Jar信息的全局变量:
    tasks.withType {
    enabled = true
    project.ext[“jarArchiveBaseName”] = archiveBaseName.get()
    project.ext[“jarArchiveFile”] = archiveFile.get().toString()
    project.ext[“jarArchiveFileName”] = archiveFileName.get()
    }

    重新使用gradle构建项目就会发现你的gradle的打包工具中出现了docker插件。

在项目的根路径下增加/docker/DockerFile

FROM josefcs/alpine-jdk8
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

新建项目至此结束,还请各位路过的大佬不吝赐教。


人生如逆旅,我亦是行人。



版权声明:本文为jiasha5788原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。