idea构建springboot项目右边没有maven_大牛带你深入理解SpringCloud与微服务构建,构建微服务准备...

前言

子曰:“工欲善其事,必先利其器”。说的是做好一件事,准备工作是非常重要的。本篇和下一篇主要介绍构建微服务前的准备工作,本章介绍开发环境的搭建,下一篇讲解开发框架Spring Boot的入门。搭建的环境包括JDK的安装、开发工具的安装,以及项目的构建工具。

常见的开发Spring Cloud项目的工具包括MyEclipse 、IntellJ Idea (简称IDEA),强烈推荐使用IDEA作为开发工具。IDEA和Spring Boot一起使用,个人认为是开发Java程序的最佳体验。

本书的案例代码都是在IDEA上开发的,所以本章介绍的开发工具也是IDEA。项目的构建工具包括Apache Maven和Gradle,Gradle 是一- 个基于Apache Ant和Apache Maven概念的项目自动化构建的工具。两个构建工具都非常方便,按个人习惯来选择,Apache Maven 的使用率要高一些,所以选择介绍的构建工具为Apache Maven。

0d0c34536fb7537be8017d01aba01d65.png

JDK 的安装

JDK 的下载和安装

由于Spring Boot在未来的版本2.0中要求最低的JDK版本为1.8,所以选择安装JDK1.8。

Mac系统已经安装了JDK,所以不需要用户自行安装。Windows 用户需要从Oracle官网下载安装包,下载完成后,解压安装。

环境变量的配置

JDK安装完成后,需要设置环境变量。在Windows操作系统中,打开“我的电脑”→“属性”→“高级”一“环境变量”,新建系统变量“JAVA HOME",变量值为“JDK”的安装目录,例如我的安装目录为“D:Program Files\Java\ jdk1.8.0_ 121”。选择“系统变量”中变量名为“Path"的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径追加到环境变量Path尾部,注意用“;”来分隔前面的变量。例如我在Path尾部追加为“;%JAVA_ HOME%\bin%JAVA_ HOME%\jre\bin;"。

JDK的安装工作已经全部完成,现在来验证JDK是否安装成功。打开命令行窗口,输入“java -version”,如果JDK安装成功且环境变量设置成功,命令行窗口会显示如下信息:

java version "1.8.0 121"

Java (TM)SE Runtime Environment (build 1.8.0 121-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

IDEA的安装

对于习惯了使用Eclipse 或者MyEclipse的开发者来说,可能不愿意换新的IDEA,因为需要花时间去学习,还要去适应新的开发工具。个人觉得,IDEA比Eclipse 系列好用很多,它带来了不一一样的开发体验,主要体现在以下5个方面。

  • 有对用户 更加友好的界面,有更加护眼的黑色主题,感觉更高端大气。

  • 比 Eclipse更加智能,主要体现在代码的补全方面。

  • 更加友好的代码提 示功能。

  • 内置Maven、Gradle等构建工具,并且下载依赖包非常智能和流畅。

  • 更加强大的纠错能 力。

虽然,Eclipse和IDEA都能开发出Java项目,Eclipse 也非常好用,但两者的写代码体验不在一个级别上。IDEA具有更友好的界面和更智能的代码提示,以及更强大的纠错能力,所以IDEA写代码体验更好、效率更高。建议读者用IDEA来开发Java项目,本篇所有的代码都是用IDEA来写的。

IDEA的下载

去官方网站hts://www.jetbrains.com/idea/ 下载IDEA, IDEA有免费版和商业版,免费版能做一些基本的Java开发,但是不能用来进行J2EE的开发,所以需要下载商业版。商业版对学生免费,你需要一个.edu结尾的邮箱去申请获取免费版本,申请通过即可免费使用商业版本。

下载完成,按照提示的步骤安装即可。安装完成后,启动IDEA,会进入如图3-1所示的界面。

3bcd1f0ac2dedca2a7749df7cab480f4.png

启动成功后,需要配置JDK,单击图3-1右下方的“Configure”按钮,选择“Project Defaults"→“Project Structures",进入配置界面,选择"Project SDK"为安装的JDK1.8即可,ProjectLanguage Level为SDK (default8), 如图3-2所示。

c9bee3cc09a12ce6c22c3ffda9e989b0.png

用 IDEA创建一个Spring Boot工程

IDEA提供了多种方式去创建工程,非常便捷。本节介绍采用Spring Initializr 的方式来创建工程。在图3-1的界面选择“Create New Project",创建新工程,选择“Spring Initalizr"的方式创建Spring Boot工程,如图3-3所示。

单击“Next", 填写Group (例如“com.forezp")和Artifact ( 例如“hello-world"),选择默认的Maven工程,其他配置默认即可。单击“Next", 进入Spring Initalizr 模块选择界面,如图3-4所示。Spring Initalizr 提供了很多可选的常见功能模块,大多数模块是与Spring Boot进行了整合的起步依赖的功能模块,例如Core提供了AOP、Security、Cache、Session等模块,Web提供了Web、Webservice、 WebSocket 等模块,读者可以自行查看相关模块的相关功能。

本例中选择Web模块的Web功能,单击“Next”,然后单击"Finish”。

单击“Finish" 之后,IDEA会从spring.io网站下载工程模板,下载完成后就是一个完整的Spring Boot工程。在工程的目录下有一个HelloWorldApplication类,该类为程序的启动类,在该类上添加@RestController注解,开启RestController 的功能,写一个接口“hi”,使用@GetMappin注解表明为Get类型的请求。具体代码如下:

6ac1f8ff09d017ed2b817451366d7a82.png

3e9c9303e601fb5436bab5ac5e563dfc.png

@SpringBootApplication
@RestController
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication. run (HelloWorldApplication.class, args);
@GetMapping("/hi")
public String hi () {
return "hi,I'm forezp";
}

启动HelloWorldApplication类的main方法,程序启动。程序启动完成后,在浏览器上输入"http://localhost:8080 /hi",浏览器会显示“hi,'m forezp”。关于Spring Boot,会在下一章中会作入门级的详细介绍。

用IDEA启动多个Spring Boot工程实例

在上述讲解的案例中,一个Spring Boot 工程经常需要启动多个实例,分别占用不同的端口。在IDEA上单击Application右边的下三角,弹出选项后,单击“Edit Configuration", 如图3-5所示。

2c999658a5374f212ad7596a0cee02b2.png

打开配置界面后,将默认的“Single instance only" (单实例)前的对号去掉,如图3-6所示。通过修改配置文件application.yml的server.port端口,并启动。多个实例需要多个不同的端口号,分别启动即可。

f4449ab42e64dfb063d9391d495cfb9d.png

构建工具Maven的使用

Maven 简介

Apache Maven是一款软件项目管理的开源工具,是基于工程对象模型(Pom)的概念而设计的。Maven可以管理项目构建的整个生命周期,包括清理(Clean)、 编译(Compile)、 打包(Package)、测试(Test) 等环节。同时Maven提供了非常丰富的插件,使得构建项目和管理项目变得简单。构建一个项目所需要的流程如下。

(1)生成源码。

(2)从源码中生成文档。

(3)编译源码。

(4)测试。

(5)将源码打包成Jar,运行在服务器、仓库或者其他位置。

Apache Maven已经实现了以上的全部功能,并且只需要相关的命令就可以完成相关的功能。

Maven 的安装

安装Maven前,需要保证JDK已经正确安装,并且环境变量已经配置正确,Maven 版本为3.0之后的版本,需要的JDK版本至少为1.6 版本。

从官网http://maven.apache.org/download.cgi下载完Apache Maven, 解压到任意目录,例如我解压到/usr/local下:

tar xzvf apache-rnaven 0-b . tar. gz sudo rnv apache-rnaven-3.5.0 /usr/local/

配置环境,先打开配置环境变量的文件 在终端运行如下命令:

$ vi ~/ .bash profile

在配置文件中需要 置一个 M2_ HOME变量,它的路径为 Maven 安装目录路径,添加M2 HOME 变量到环境变量 path 中。配置文件如下:

export M2_ HOME=/usr/ local/ apache -maven-3.5.0

export PATH=$PATH: $M2 HOME/bin

检查 Maven 是否安装成功和 Maven 的环境变量是否配置正确,可以使用 Maven 命令“ mvn-v ”去检查。在终端输入“mvn-v ”, 如果终端界面显示如下信息,则证明 Maven 安装成功且环境变量配置正确。

Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03 39:06+0 日:00)

Maven home : /usr/local/apache -rnaven- 3 . 5.0

Java version: 1.8 . 0 121 , vendor : Oracle Corporation

Java home: /Library/Java/JavaVirtualMachines/]dkl.8.0_121.jdk/Contents/Horne/jre

Default locale:zh_ CN,platform encoding : UTF- 8

OS name :”mac os x ”, version : ” 10 . 12 . 3 ”, arch :”x86_64 ”, family : ”mac ”

设置 Maven 的本地仓 ,在终端输入命令切换到 Maven 置文件的目录,打 Maven的配置文件 settings.xml 。在终端输入的命如下:

cd /usr/ local /apache-maven-3.5.0/

vim settings . xml

打开配置文件 settings nl 后,在配置文件中修改本地仓库的路径,本案例的本地仓库路径为“/usr local mvn rep 。”,配 如下:

/usr/local/rnvn_repo

由于 Maven 程服务器在国外,可以添加阿里云 镜像 这样下载 Jar 包的速度会大大增加,在配置文件 sett ings.xml 下添加如下内容:

<mirrors>
<mirror>
<id>alirnavenid>
<narne>aliyun rnavennarne>
<url>http://rnaven . aliyun.com/nexus/content/groups/public/
url>
<mirrorOf>centralmir rorOf>
mirror>
mirrors>

Maven 的核心概念

Maven 的核心 porn 件, porn 文件以 xm 文件的形式来表示资源,包括 些依赖 Jar插件、构建文件等。Maven 作过程如图 3-7 所示

6f25825c90e208a63334cf166727d74a.png

  • 首先读取pom文件。pom文件是Maven的核心,所有的项目依赖、插件都在pom文件中统-一管理。

  • 下载依赖 Jar到本地仓库。Maven命令执行时,首先会检查pom文件的依赖 Jar,当检测到本地没有安装依赖Jar时,会默认从Maven的中央仓库下载依赖Jar,中央仓库地址为htp://repol/ maven.org/maven2/。依赖Jar下载成功后,会存放在本地仓库中,如果下载不成功,则该命令执行不会通过。

  • 执行构建的生命周期。Maven的构建过程会被分解成构建阶段和构建目标,它们共同构成了Maven的生命周期。

  • 执行构建插件。插件可以更方便地执行构建的各个阶段,也可以用插件实现一些额外的功能。目前Maven有非常丰富的插件,如果需要,你也可以自己实现Maven插件。

编写Pom文件

pom文件是一个xml文件,用于描述项目用到的资源、项目依赖、插件、代码位置等信息,是整个工程的核心。pom.xml文件一般放在项目的根目录下。以3.2.1节案例中工程的pom文件为例来讲解,其代码如下:

〈?xml version 1. encoding UTF ?〉
<project xmlns http //maven apache org/POM/4.0
xmlns : xsi=” http : //www . w3 . org/2001/ XMLSchema-instance ”
xsi : schemaLocation=” http : //maven . apache . org/POM/4 . 0 . 0
http : //maven . apache . org/xsd/maven- 4 . 0 . 0 . xsd">
<mode1Version>4 . 0 . 0mode1Version>
<groupid>com . forezpgroupid>
<artifactid>hello-worldartifactid>
<version>0 . 0 . 1-SNAPSHOTversion>
<packaging>jarpackaging>
<name>hello- worldname>
<description>Demo project for Spring Bootdescription>
<pare 口 t>
<groupid>org . springframework . bootgroupid>
<artifactid>spring- boot- starter- parentartifactid>
<version>l . 5 . 3 . RELEASEversion>
<relativePath/> < !- - lookup parent from repository -->
parent>
<properties>
<project . build . sourceEncoding>UTF- 8
project.build . sourceEncoding>
<project . reporting . outputEncoding>UTF- 8
project reporti g.outputE cod ng>
〈〕 ava.version>l. 自〈/〕 ava.vers on>
properties>
<dependencies>
<dependency>
<groupid>org . springfr amework . bootgroupid>
<artifactid>spring-boot- starter-webartifactid>
dependency>
<dependency>
<groupid>org . springframework . bootgroupid>
<artifactid>spring- boot- starter-testartifactid>
<scope>testscope>
dependency>
dependencies>
<build>
<plug ins>
<plugin>
<groupid>org . springframework.bootgroupid>
<artif actid>spring-boot-maven-pluginartifactid>
plugin>
plugins>
build>
project>

pom.xml的第一行 指定了xml的版本和编码方式。project 的标签是该文件的根元素,它声明了pom相关的命名空间。modelVersion 指定了pom的版本,对于Maven 3来说,它的版本为4.0.0。

groupld、artifactld 和version是3个最重要的标签,根据这3个标签,可以在Maven仓库中唯一确定该依赖Jar。其中,groupld 代表了公司、组织的名称,一般为 公司域名的倒写,如本例中的com.forezp; artifactld 代表该项目的全局唯一Id, 如本例中的hello-world; version 是指该项目的版本。将项目上传到Maven仓库中,有这3个标签才能准确无误地找到该Jar包。

parent标签用于指定父pom,本案例采用的父pom是版本号为1.5.3.RELEASE 的spring-boot- starter parent的pom。

properties标签用于声明一些常量,例如上述代码中的源码编码为UTF-8,输出代码也为UTF-8,Java 版本为1.8。

dependencies标签为依赖的根元素,里面可以包含多个dependency元素,dependency 里具体为各个依赖Jar的3个坐标,即groupId、artifactld 和version。其中version可以缺省,如果缺省,就会默认为最新发布的版本。

build为构建标签,它可以包含plugins (插件)标签,plugins 标签中可以包含若干个plugin标签,可以根据项目的需求添加相应的plugin。本例中有spring boot-maven-plugin插件,用此插件可以启动Spring Boot工程。

b19ff1b19f815169ef23d6a6b37c875e.png

Maven 构建项目的生命周期

在Maven工程中,已经默认定义了构建工程的生命周期,不需要额外引用其他的插件,因为Maven本身就已经集成了这些插件。默认的生命周期包括了23个阶段,如表3-1所示。

72fe2c1c542c14148c6a5613bfef195b.png

a9679534e4176637d0e20dd26dadb72a.png

常用的Maven命令

(1) mvn clean删除工程的target目录下的所有文件。

(2) mvn package将工程打为Jar包。

在终端上切换到3.2.1节中项目的根目录下,输入mvn

package命令,终端最后会显示如下信息,证明工程打Jar包成功。

Tests run : 1 , Failures : 0 , Errors : O, Skipped : 0
[INFO) --- maven-jar-plugin : 2 . 6 : jar (default- jar) @ hello-world ---
[INFO) Bu i lding jar:
/Users/forezp/IdeaPro] ects/jianshu2/hello- world/target/hello-world-0 . 0 . l-SNAPSHOT . jar
[INFO)
[I NFO) --- spring- boot-maven-plugin : 1 . 5 . 3 . RELEASE : repackage (default ) @ hello-world ---
[I NFO) --------- ---------------------------------------------------
[INFO) BUILD SUCCESS
[INFO) -------------------------- 一- --
[INFO ) Final Memory : 32M/271M
[INFO ) --一- 一- -一一-- ----------------

上述的 mvn package 打包命令不 个简 的命 它是 系列有序的命 构成的,mvn package 命令执行过程包含以下 个阶段。

验证。

编译代码。

处理代码。

生成资源文件。

生成Jar包。

测试。

(3) mvn package -Dmaven.test.skip=ture,打包时跳过测试。

(4) mvn compile编译工程代码,不生成Jar包。

(5) mvn install 命令包含了mvn package的所有过程,并且将生成的Jar包安装到本地仓库。执行mvn install命令,可以看到终端输出的日志,经过了与mvn package相同的阶段,最后将Jar 包安装到本地仓库。终端显示的日志如下:

[INFO] Installing
/Users/forezp/IdeaProjects/j anshu2/hello-world/target/hello-world 0.l-SNAPSHOT.jar
to
/Users/forezp/ . m2/repository/com/forezp/hello- world/0 . 0 . l-SNAPSHOT/hello- world-0.0.1-
SNAPSHOT . jar
[INFO] Installing /Users/forezp/IdeaPro] ects/]ianshu2/hello-world/pom . xml to
/Users/forezp/.m2/repository/com/forezp/hello- world/0 . 0 . l - SNAPSHOT/hello- world- 0 . 0 . l
SNAPSHOT . porn
[INFO] --------------------------------------- - - ----- ------ --- -----
[INFO] BUILD SUCCESS
[INFO] -------------------------------- - ------
[INFO] Total time : 7 251 s
[INFO] Finished at : 2017-05-24T22 : 43 : 48+08 : 00
[INFO] Final Memory : 30M/272M
[INFO] -------------------------- - -- ---------------- - - -

(6) mvn spring-boot:run 使用spring-boot插件,启动Spring Boot工程。该命令执行时先检查Spring Boot 工程源码是否编译,如果工程源码没有编译,则先编译;如果编译了;则启动工程,启动后工程日志如下:

f704c457aeaaf67c6ffaf4b683faee17.png

55cd2851369bdf35fd1a7cfcc613f5c4.png

(7) mvn test测试。

(8) mvn idea:idea生成idea项目。

(9) mvn jar:jar只打Jar包。

(10) mvn validate检验资源是否可用。,

本篇讲述了开发项目中开发环境的搭建和开发工具的使用,难免会有点枯燥,但却是开发微服务的基本前提,下 一篇将讲述Spring Boot的入门内容。

87562ab8b95b46fd150af7c900b8f2b0.png

多多转发关注小编不迷路,每日更新技术好文~~~~

感谢大家支持!!!!

d309ced3fd648962259a656c7fd9e586.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值