maven+springboot项目使用idea打包

首先简单了解一下maven:html

概述

平常开发中,咱们用到的maven相关功能大概如下几种: 
一、 管理jar依赖 
二、 构建项目(打包、编译等) 
三、 发布项目(共享、上传至服务器,供他人使用)java

简单介绍:

一、管理依赖

jar通常在pom.xml文件的中配置,以spring core为例,通常格式以下:web

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.1.RELEASE</version> </dependency>

其中groupId通常为项目(jar war pom等)的发布机构名称; 
artifactId为项目名称; 
version为项目版本; 
在项目编译打包的时候,ide会自动到maven仓库去查找相应的jar文件,打包并存放在项目的相应路径下(如web项目的lib目录下) 
(关于依赖的各个名称和写法,请见后文:详细说明–依赖说明)spring

二、构建项目:

这里所说的构建项目主要指打包、编译、运行测试用例等操做,即maven的生命周期中的打包过程。 
最经常使用的就是compile了,通常项目修改代码之后都要从新编译,而后加载到tomcat中运行调试。 
其它的还有clean、package等比较经常使用的操做,请见详细说明–生命周期部分apache

三、发布项目:

若是咱们写一些通用框架,或者本身封装了一些常见的工具类,想要打包为jar而且供他人使用,那么咱们能够经过maven发布到公共仓库(私服)供他人下载依赖使用。 
好比每一个公司都会有本身的框架,持久层、控制层或者其它功能等。当咱们没有使用maven的时候,咱们是直接把别人的jar拷贝到项目的library目录下,而如今咱们有了maven就不用本身处处拷贝jar包了,只须要在发布的时候找到别人发布到仓库时候写的groupId artifactId version等信息就能直接添加依赖了,也就是至关于第一步的依赖管理。tomcat

四、多模块

maven实际上经过多模块的思想来组织依赖的,每个项目或者jar都是一个模块,咱们能够把一些通用的,不常变更的东西写在一些指定的模块下,在另一个项目中引用依赖(这里就有点相似【一、依赖管理】,这样一来可让项目结构更清晰、方便别人依赖使用,若是项目都是一个模板,也能够复用等等,还有其它各类好得本身摸索感觉吧)安全

详细说明:

一、依赖名称:

这里要注意,在咱们本身发布项目时尽可能遵照以上规范,不然当别人搜索依赖时会写的很冗余很混乱,这也是不少私服中不断重复上传相同jar会致使项目出错的缘由。 
正常来讲,一个项目(如spring的jar)应该是机构、名称和版本惟一的,当咱们引用时,能够经过这三个参数惟一标识出一个项目,在上传这些项目的时候,不少人喜欢在artifactId中写上本该属于groupId的内容,这实际上是不合理的。 
举个错误写法例子:bash

<dependency> <groupId>org.springframework</groupId> <artifactId> org.springframework .spring-core</artifactId> <version>4.1.1.RELEASE</version> </dependency>

这里在artifactId中重复定义了本该属于groupId的内容,因此这样对于项目发布来讲是不规范的。服务器

二、依赖在哪:

由于咱们安装maven是要配置maven主程序目录、maven配置文件目录、maven仓库目录这三个路径的(可能ide会有自动配置,但这三个都是必不可少的) 
maven主程序也就是咱们下载的maven插件的根目录; 
maven配置文件路径就在maven主程序目录\conf\下,默认名为setting.xml; 
maven仓库目录也就是maven自动下载jar所存放的目录以及咱们项目发布的本地目录。 
当咱们编译项目时通常会有以下过程: 
1)编译 
2)找到pom文件,并扫描相关依赖 
3)根据pom中依赖配置信息,到本地maven仓库去查找jar包 
4)若是本地没有jar,maven会到它的中心仓库下载jar( 
1. http://www.sonatype.org/nexus/ 
2. http://mvnrepository.com/) 
5)若是你公司建立了私服,而且你的maven中作了配置,那么在本地没有找到jar包时,会根据maven的配置文件(conf/setting.xml)所配置的地址,到maven的私服仓库去寻找jar,私服也会根据它的配置规则在本地或中央仓库查找jar,若是本地没有就从服务端下载到本地。(私服的优势见下文)网络

在步骤1 中,编译会将本地*.java编译为字节码文件,其中不少jar依赖于第三方类库,这时候IDE会根据已配置的 maven\conf\下的setting.xml文件中的配置(或IDE的maven仓库路径)去查找相应jar包。若是有jar包,则会拷贝到项目的编译目录下(myEclipse默认为“tomcat\webapp\lib\”目录下;Intellij IDEA 默认在“项目target\webapps\lib”目录下), 
若是本地没有,那么会先去仓库下载到本地,再从本地拷贝到项目编译目录。 
其它的下载过程最终也会下载到本地并拷贝到编译目录,更多详情就很少解释了,可自行学习。

三、生命周期:

maven将项目的生命周期大体分为9个,分别为:clean、validate、compile、test、package、verify、install、site、deploy 
我常常用的也就是clean、compile、package、install、deploy,并且deploy相对也较少,由于不多发布公共的项目供别人依赖使用,基本也就是项目打包为war时候会打包到私服,运维人员能够到私服上直接下载对应版本。 
其中clean即清除项目中编译文件和本地仓库中已打包的文件(即本地install的文件,install后面讲到) 
compile即编译项目中的java文件,并存放在项目的编译目录(根据不一样的配置,编译目录也不同) 
test 即运行项目中的测试用例文件,若是测试用例未经过,也会打包失败,另,这里的test过程能够在pom中经过配置跳过。(想一想也是,我项目都好了,其实不是非要跑测试用例的) 
package 即将本地编译好的文件打包为war 或者jar(这是最多见的两种,其余相关自行了解) 
verify 我不多用到,没怎么了解过 
install 将打包的代码存放到本地maven仓库,可供本地其它项目依赖使用 
site生成项目报告,站点,发布站点,这个也不多用到,不是很清楚 
deploy 将打包在本地仓库中的项目发不到服务器,供他人依赖使用 
详细生命周期自行学习了解。

maven在执行一个生命周期的命令的是时候将会执行以前的全部生命周期操做,好比执行mvn install,会执行前面一系列的动做包括 compile , package , test 等,具体请查看maven的官方文档。这个特性使maven的命令更加简洁易用。

四、私服的优势

在上述过程当中,私服的做用至关于本地的maven仓库,但它同时又做为服务器的角色来为局域网用户提供jar下载,在不少开发环境中,开发机器是不容许链接互联网的,因此这时候maven就不能正常访问中央仓库下载jar文件,因此这里的私服仓库就显得尤其重要了。私服所在服务器提供了同时访问内网和互联网的功能,当用户找不到jar包依赖时,能够经过内网访问私服服务器,若是私服没有,那么私服会经过互联网去中央仓库或其它仓库下载,这样能够必定程度上保证开发环境的安全性。 
另外一方面局域网的访问速度广泛是比互联网快的,若是在本地没有jar,当局域网用户下载jar包且私服没有时,私服的带宽比较大即可以更快速的下载到jar并回传到开发者本地,这样能够保证在复杂的网络环境或网络不通畅的时候依然可使用maven相关的功能。而且,当局域网中有用户下载了相应jar包后,其它用户再次须要该jar包时私服仓库即可以直接从私服服务器本地直接经过局域网发送给局域网用户,这样大大减小了带宽、流量并解决了不少因为网络环境致使的问题。

因为平时接触的jar war比较多,文中不少地方对依赖或者项目打包都简单以jar来讲明,其实那些jar不单是指jar包文件,还能够是war、pom、或者项目目录结构打包的相关类型的文件,为了便于理解暂用jar来讲明,待知识体系再完善还会进一步修改哈。

一、 tomcat启动:

IDEA 打包配置:

mvn clean package -DskipTests

或者

mvn clean package -Dmaven.test.skip=true

而后在有main方法的项目编译后的target下main找到war包例如:ctuom-web-201803020954.war(须要修改成ctuom-web.war),而后把war包放在tomcat目录的webapps下面解压,

启动tomcat下bin里面的startup,访问:http:localhost:8080/ctuom-web/ 就能够访问了

二、 在Springboot的应用的根目录下运行mvn spring-boot:run

三、使用mvn install 生成jar后运行

先到项目根目录
mvn install
cd target java -jar xxxx.jar
相关文章
相关标签/搜索