原创者:文思
什么是maven及maven的基本常识这里就不再描述了,直接介绍ide中maven插件的基本用法,以及maven在spring boot项目中打包时容易遇到的坑。
一、插件介绍
1、myeclipse中maven插件简介
Maven4MyEclipse是Maven和MyEclipse
IDE之间进一步的整合和常用插件。这种整合消除了一些Maven用户最常见的障碍,包括:
a 从MyEclipse类路径容器的后台安装Sun JARs到您的本地Maven仓库中
b 运行时的JDK简单配置和编译时的Maven
c 简单安装自己的JAR到Maven仓库中
d 停留在IDE中并可以从UI中执行所有的Maven任务

前两个分别是添加依赖与插件,与在pom中直接编辑添加无异:

Download Source与javaDoc是下载源码与文档,不用细说.
update project本身是更新项目的意思,当修改了pom文件没有自动及时生效时,update project会更新相对应的“eclipse的.classpath”文件,手工更新项目。
备注:如果原JDK版本为1.7, 使用Maven > Update project的时候JDK版本都恢复成1.5的话,在“pom.xml”文件中增加如下配置之后再次重新Maven > Update project即可:

Disable Maven Nature转为一般工程
Enable Workspace Resolution:打开这个选项以后,在Workspace中配置的工程才会作为依赖工程,如果disable之后,则会被视为静态的依赖jar包。
打开时如下:

关闭时:

二、打包
打包有两种方式:第1种是maven install,这个时候不用配置命令的,右键工程--》run as 或者dabug as 中都有,如果之前打过包了,但还没有清除容易失败,所以打包前最好先clean一下。第2中在doc下手工执行maven的package打包的命令。
1:ide中打包
1.1利用ide中的maven build只打包,不发布
首先,maven没有build命令,ide中的build等同于Maven命令,只是代表准备要执行的maven命令,可以在build中执行任何命令(包括clean和deploy等)

在ide的build中执行maven的package命令,打包前最好先clean一下:

1.2利用ide中的maven install打包后发布到本地仓库:

ide的maven install相当于maven命令的:mvn intall,而mvn install相当于mvn package+mvn deploy本地仓库参数
2:在doc窗口中,在项目下执行mvn package,建议mvn clean package,先清除再打包

三、基于spring boot项目应用的打包

打包后找不到pom下spring boot的依赖包了:

检查pom中的插件配置plugs:

由于spring boot风格的项目在项目结构与pom关系上与普通项目不同,不使用SpringBoot自带的插件,因为这个打包会打包在Spring-Boot目录下导致别的项目引用时引用不到,Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
Spring Boot Maven plugin的5个Goals
a:spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin
b:spring-boot:run,运行Spring Boot应用
c:spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
d:spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
e:spring-boot:build-info,生成Actuator使用的构建信息文件build-info.properties
如果你的POM不是继承spring-boot-starter-parent的话,需要下面的指定:

或者

要打war包则:

参考指南:
https://docs.spring.io/spring-boot/docs/current/maven-plugin/usage.html
spring-boot-maven-plugin待研究细节
网友评论