maven中的倉庫
需要jar包時,先到本地倉庫中找,沒有就從中央倉庫去下載到本地倉庫。
中央倉庫很多都在國外,下載速度慢。國內的一些公司在自己的服務器上搭建了maven倉庫(中央倉庫的鏡像),供內部人員使用,因為在公司私有的服務器上,所以又叫做私服。
有的公司把自己的maven分享出來,免費供開發者使用,比如阿里雲的maven倉庫。
如果使用了私服,需要jar包時,先到本地倉庫中去找,找不到再去私服上找,如果私服上沒有,就從中央倉庫下載到私服,再從私服下載到本地倉庫。
Maven中的坐標
Maven用坐標來唯一標識一個項目、依賴,坐標由三部分組成:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
- groupId 公司、組織的名稱
- artifactId 項目名稱
- version 項目版本號。SNAPSHOT,快照,開發中的版本,不穩定;Release,發布版本。
依賴的作用域:
依賴有3個作用時期:編譯時、測試時、正式部署運行時。
有的依賴3個時期都要使用,有的依賴只在特定時期使用,可使用<scope>設置依賴的作用域:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
<scope>常用的值:
- compile 默認值,編譯、測試、正式運行,一般都使用默認值
- test 只在測試時有效,比如junit
- runtime 只在運行時有效(測試+正式運行)
- provided 只在編譯、測試時有效
Maven常用命令
- mvn -v或-version 顯式Maven的版本信息,一般用來驗證maven是否配置成功
在cmd下就可以管理項目,先切換到項目的根文件夾:
- mvn clean 清理。刪除target文件夾(之前編譯、打包產生的文件)
- mvn compile 編譯。對項目(src/main/java)進行編譯
- mvn test 測試。先執行compile對項目(src/main/java)進行編譯,再對項目測試(src/main/java)進行編譯
- mvn package 打包。先執行compile、test,在將項目打包為jar或war。
- mvn install 安裝。先執行compile、test、package,再將項目安裝到本地倉庫。本地倉庫\groupId\artifactId,是放在公司、組織文件夾下的。
- mvn deploy 發布。將項目部署到web服務器。
這5個命令代表了項目的生命周期(Lifecycle)。
eg、我先將項目打包為jar,之后修改了代碼,我執行install時,maven會自動先執行install之前的生命周期命令。
如果只是將之前的jar安裝到本地倉庫,那我做的修改豈不是無效了?為防止這種情況發生,maven會自動調用之前生命周期的方法,來更新項目。
這就是maven的對項目的自動構建。你執行deploy,編譯、測試、打包、安裝、部署都給你弄了。
每個命令都對應一個插件,執行命令實際是調用對應的插件來完成。
maven集成了tomcat插件,我們直接直接將項目部署到tomcat中:
- maven tomcat:run
注意:每次使用tomcat后,需要先點擊停止,如果不點停止,直接重新部署、重啟tomcat,可能會出現端口占用、內存泄漏的問題。