该命令包含了 package 命令功能,不但会在项目路径下生成 class 文件和 jar 包,同时会在你的本地maven仓库生成 jar 文件,供其他项目使用(如果没有设置过maven本地仓库,一般在用户 /.m2 目录下。如果 a 项目依赖于 b 项目,那么 install b 项目时,会在本地仓库同时生成 pom 文件和 jar文件,解决了上面打包 package出错的问题)。
build
建造。功能类似compile,区别是对整个项目进行编译。
与 compile区别及特点:是对整个工程进行彻底的重新编译,而不管是否已经编译过。
Build过程往往会生成发布包,这个具体要看对 IDE 的配置了,Build在实际中应用很少,因为开发时候基本上不用,发布生产时候一般都用ANT等工具来发布。Build 因为要全部编译,还要执行打包等额外工 作,因此时间较长。
site
生成项目的站点文档。
deploy(常用)
部署。将 jar 包部署到远程仓库,通常是私有仓库。而且包含了 install 命令的功能。
二、打包后,无法 import?
下面介绍一下我用常规打包方式遇到的问题。
我通过 IDEA 工具创建了一个 SpringBoot 项目,然后 pom.xml 文件中会自动引入一个打包插件,如下图所示:
然后我执行 maven package 命令,会在项目的 target 目录生成一个 JAR 包。如下图所示:
然后我做了以下事情:
把这个 JAR 包拷贝出来,发给了第三方。
让第三方拷贝到他们自己的本地项目中。这里是在项目的根目录创建了一个 libs 目录,然后将 jar 包放到 libs 目录中。
让第三方在 pom 依赖中引入这个依赖包。
scope 指定为 system,表示引入指定路径(systemPath配置)下的 JAR 包。
看起来这么做没问题了,但是当我们 import 这个 JAR 包下的类时,就会报错。如下图所示:
很奇怪,这里为什么会报错呢??
先看下这个 JAR 包是否引入了。如下所示,可以看到确实是正确引入了,没有报错。
通过 research,发现这个打包插件打出来的 JAR 包,是供执行的,也就是可以通过 java -jar 命令来运行这个 JAR 包,并不能给第三方来引用使用。