該命令包含了 package 命令功能,不但會在項目路徑下生成 class 文件和 jar 包,同時會在你的本地maven倉庫生成 jar 文件,供其他項目使用(如果沒有設置過maven本地倉庫,一般在用戶 /.m2 目錄下。如果 a 項目依賴于 b 項目,那么 install b 項目時,會在本地倉庫同時生成 pom 文件和 jar文件,解決了上面打包 package出錯的問題)。
build
建造。功能類似compile,區(qū)別是對整個項目進行編譯。
與 compile區(qū)別及特點:是對整個工程進行徹底的重新編譯,而不管是否已經編譯過。
Build過程往往會生成發(fā)布包,這個具體要看對 IDE 的配置了,Build在實際中應用很少,因為開發(fā)時候基本上不用,發(fā)布生產時候一般都用ANT等工具來發(fā)布。Build 因為要全部編譯,還要執(zhí)行打包等額外工 作,因此時間較長。
site
生成項目的站點文檔。
deploy(常用)
部署。將 jar 包部署到遠程倉庫,通常是私有倉庫。而且包含了 install 命令的功能。
二、打包后,無法 import?
下面介紹一下我用常規(guī)打包方式遇到的問題。
我通過 IDEA 工具創(chuàng)建了一個 SpringBoot 項目,然后 pom.xml 文件中會自動引入一個打包插件,如下圖所示:
然后我執(zhí)行 maven package 命令,會在項目的 target 目錄生成一個 JAR 包。如下圖所示:
然后我做了以下事情:
把這個 JAR 包拷貝出來,發(fā)給了第三方。
讓第三方拷貝到他們自己的本地項目中。這里是在項目的根目錄創(chuàng)建了一個 libs 目錄,然后將 jar 包放到 libs 目錄中。
讓第三方在 pom 依賴中引入這個依賴包。
scope 指定為 system,表示引入指定路徑(systemPath配置)下的 JAR 包。
看起來這么做沒問題了,但是當我們 import 這個 JAR 包下的類時,就會報錯。如下圖所示:
很奇怪,這里為什么會報錯呢??
先看下這個 JAR 包是否引入了。如下所示,可以看到確實是正確引入了,沒有報錯。
通過 research,發(fā)現(xiàn)這個打包插件打出來的 JAR 包,是供執(zhí)行的,也就是可以通過 java -jar 命令來運行這個 JAR 包,并不能給第三方來引用使用。