您好,登錄后才能下訂單哦!
這篇文章主要講解了“Maven安裝與環境變量配置教程”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Maven安裝與環境變量配置教程”吧!
一、Maven簡介
1. 什么是Maven
2. Maven的作用
3. 坐標的概念
小結
二、Maven安裝配置【操作】
1. Maven的倉庫類型
2. 下載與目錄結構
3. Maven安裝配置
3.1 安裝Maven
3.2 配置Maven倉庫
小結
三、Maven項目的目錄結構
小結
四、Maven構建項目
1. 項目構建的生命周期
小結
五、Maven管理依賴和插件
Maven的依賴管理
1. 在idea配置Maven(操作)
2. 在idea創建Maven項目
2.1 創建Maven的java項目
2.2 創建Maven的web項目
1.選擇項目的骨架
2.設置項目的坐標
3. 引入依賴
4. 依賴范圍
小結
jdk編譯版本插件
tomcat7插件
Maven的插件
六、Maven的私服
搭建私服
講解
什么是Maven的私服
搭建Maven私服
1. 下載nexus
2. 安裝nexus
3. 啟動nexus
4. 登錄nexus
nexus的倉庫類型介紹
小結
使用私服
把項目發布到私服
從私服下載jar包
小結
上傳jar到本地倉庫和私服
目標
把第三方jar打包到本地倉庫
把第三方jar打包發布到私服
參數說明
七、Lombok
1. Lombok介紹與配置
什么是Lombok
Lombok的作用
Lombok的配置
2. Lombok的常用注解
附:添加依賴出錯怎么辦
現象:
原因:
解決:
總結
Maven:是Apache提供的免費開源的項目管理工具。它提供了一個項目對象模型(pom.xml)、一個依賴管理系統(根據坐標,幫我們引入依賴)、一套項目生命周期(幫我們方便的進行項目構建)、一組標準集合(Maven工程的目錄結構規范,坐標規范)、和一個插件管理系統(提供了進行項目構建的命令)。
項目構建:一個項目開發之后,經歷的編譯、測試、打包、安裝、部署等等一系列的過程,叫項目構建
主要是測試、運維/實施人員使用的
依賴管理:Maven可以幫我們管理jar包,可以輕松的解決依賴的沖突問題
依賴:通常指jar包,不僅僅是jar包
模塊化創建項目
坐標:被Maven管理的每個項目,都必須有自己的唯一標識,這個唯一標識叫坐標坐
標的組成:由三部分組成
groupId:公司名、組織名 域名倒寫。比如:c3p0
, com.jd
artifactId:項目名、包名。比如:c3p0
version:版本號。比如:0.9.1.2
, 1.0-SNAPSHOT
, 5.2.0-RELEASE
什么是Maven:是Apache提供的一個開源免費的項目管理工具
Maven的作用:
項目構建:編譯、測試、打包、安裝、部署等等一系列的過程,叫項目構建
依賴管理:幫我們管理jar包依賴
模塊化創建項目
坐標的概念:
groupId:企業名/組織名 域名倒寫
artifactId:包名/項目名
version:版本號
被Maven管理的每個項目/jar包,其唯一標識叫坐標
由三部分組成:
1.本地倉庫:本地緩存jar包的文件夾
本地倉庫默認在:C:\Users\電腦的用戶名\.m2\repository
通常會修改配置文件,修改本地倉庫的路徑
2.遠程倉庫(私服):一些企業、組織、社區搭建的倉庫服務
通常企業里人自己搭建私服。私服里的jar包大多數還是來自于中央倉庫
有些是企業內部自己搭建、自己使用的
有些是企業搭建面向整個互聯網的,比如:阿里私服
3.中央倉庫
是Maven官方團隊維護的倉庫,里邊有最全的jar包。
但是沒有授權的jar包,中央倉庫里沒有,比如:Oracle驅動包
地址:https://repo1.maven.org/maven2
下載地址:http://maven.apache.org
Maven的目錄結構:
maven |--bin Maven的可執行命令文件夾 |--boot Maven的引導程序(類加載器) |--conf 配置文件夾 |--lib Maven的核心程序代碼
1.Maven是免安裝的,直接解壓
注意:解壓路徑里,不要有中文、空格、特殊字符
2.注意檢查JDK環境變量是否正確
Maven軟件是Java語言編寫的
3.配置Maven環境變量:
增加MAVEN_HOME=Maven的解壓目錄
修改Path中添加 %MAVEN_HOME%\bin
1.驗證Maven配置
打開cmd,輸入命令:mvn -version
配置步驟:
新建一個目錄,例如 :repository,目錄里不能有中文、空格、特殊字符
比如我的路徑為:D:\develop_software\maven\repository
修改Maven的conf\settings.xml配置文件
擴展:
修改settings.xml里,設置Maven編譯的版本jdk1.8。在<profiles>里邊增加:
<profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
倉庫類型
本地倉庫:自己電腦上緩存jar包的文件夾
遠程倉庫(私服):一些企業、社區、組織自己搭建的倉庫服務
中央倉庫:Maven官方團隊維護倉庫服務
maven的安裝:
解壓。注意:解壓的目錄里不要有中文、空格、特殊字符
配置環境變量:
新增MAVEN_HOME, 值就是maven軟件的解壓目錄
修改Path,值里新增%MAVEN_HOME%\bin
配置本地倉庫:
創建repository目錄里不要有中文、空格 、特殊字符
修改Maven的conf\settings.xml,增加本地倉庫的配置:<localRepository>標簽
一個項目要想使用Maven進行管理,那么這個項目的目錄結構就必須要符合Maven的要求:
maven項目 |--pom.xml 項目對象模型文件,一個Maven項目必定有pom.xml文件 |--src |--main 項目的主體程序代碼目錄 | |--java 項目的Java程序代碼放在這文件夾里 | |--resources 項目的配置文件放在這里 | |--webapp 項目的web資源放在這里,html,css,js,jsp,音頻,圖片,視頻等等 | |--WEB-INF | |--其它web資源 |--test 項目的單元測試代碼目錄 |--java 項目的單元測試代碼 |--resources 項目單元測試需要的配置文件
src\main\java
:放主體程序代碼的java文件
src\main\resources
:放主體程序代碼的配置文件
src\main\webapp
:放主體程序代碼的web資源:html、css、js、jsp等等
Maven命令執行的規律:
clean: clean compile: compile test: compile=>test package: compile=>test=>package install: compile=>test=>package=>install 人的生命周期:嬰兒=>兒童=>少年=>青年=>中年=>老年
Maven有三套生命周期
清理生命周期:CleanLifeCycle
有常用命令:clean
默認生命周期(構建生命周期):DefaultLifeCycle
有常用命令:compile->test->package->install->deploy
站點生命周期:SiteLifeCycle
有常用命令:site
。生成Maven項目的描述信息文檔
如果執行了一個目標命令:Maven會把生命周期里的命令,從第一個一直執行到目標命令為止
常用命令:
mvn clean
:清理。刪除掉target目錄
mvn compile
:編譯。把主體程序代碼進行編譯,放到target目錄里
mvn test
:測試。編譯并執行單元測試代碼
mvn package
:打包。Java項目打成jar包,web項目打包war包
mvn install
:安裝。把程序包安裝到本地倉庫,安裝位置是坐標對應的文件夾
Maven的生命周期
清理生命周期CleanLifeCycle:clean
默認生命周期/構建生命周期DefaultLifeCycle:compile=>test=>package=>install=>deploy
站點生命周期SiteLifeCycle:site
生命周期的作用:只要執行一個目標命令,Maven會從生命周期里第一個階段開始,執行到目標命令為止
把Maven配置到idea中
在idea里創建Maven的java項目
在idea里創建Maven的web項目
Maven項目中,引入依賴的方法
Maven的依賴范圍配置,解決jar包沖突
配置Maven
增加運行的配置項:-DarchetypeCatalog=internal
1.創建Module,選擇Maven類型,選擇骨架org.apache.maven.archetypes:maven-archetype-quickstart
2.設置項目的坐標
3.再繼續步驟,跟以前的一樣:設置module的名稱和位置
注意:不要和已有的其它module重名或者重位置
4.創建后,如果彈窗Maven projects need to be imported
,就選擇 啟動自動導入。
作用是:如果pom.xml文件有變更,Maven會自動讀取,立即生效;否則就要手動導入
5.如果文件夾缺失,就創建補全,然后刷新
如果上邊Add as module to
和Parent
是有配置的,那么要在右邊全部選擇none
如果項目中需要使用jar包,只需要把jar包的坐標配置到項目的pom.xml中即可。在pom.xml的<dependencies>
標簽里增加以下內容:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>依賴范圍</scope> </dependency>
可以在pom.xml里,輸入
dep
,會自動補充坐標模板,我們填充坐標值即可可以使用
alt+insert
,會彈出依賴導入的界面,可以從本地倉庫里搜索依賴如果不知道依賴的坐標,可以從中央倉庫搜索坐標:https://mvnrepository.com/
如果項目中引入的jar包過多,可能會出現jar包沖突,我們可能設置jar包不同的依賴范圍來處理jar包沖突。
Maven的依賴范圍有:
compile
:默認的依賴范圍,全范圍有效。
test
:單元測試有效。src/test里有效,src/main里無效
provided
:編譯時有效,運行時使用其它地方提供的jar包。
runtime
:運行時有效,編譯時無效。比如:數據庫驅動包
system
:引入倉庫之外的本地jar包。少用
實際開發中特殊的jar包
Junit
:依賴范圍通常設置為test
servlet-api, jsp-api
:依賴范圍通常設置為provided
數據庫驅動包
:依賴范圍可以是默認的,也可以是runtime
其它包,絕大多數都是默認依賴范圍compile
依賴范圍:
compile:默認的。編譯時有效,運行時有效,單元測試有效
test:單元測試有效(src\main\test)里有效
單元測試Junit的包
provided:編譯時有效,運行時無效(備胎包)
servlet-api,jsp-api
runtime:編譯時無效,運行時有效
數據庫驅動包
system:引用倉庫之外的本地jar包,少用
maven插件可以完成一些特定的功能。例如,集成jdk插件可以方便的修改項目的編譯環境;集成tomcat插件后,無需安裝tomcat服務器就可以運行tomcat進行項目的發布與測試。
在pom.xml的plugins
標簽中,通過plugin
標簽引入maven的功能插件。
把<plugins>
標簽,放在pom.xml的<build>
標簽內部
<!--jdk編譯插件--> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>utf-8</encoding> </configuration> </plugin> </plugins>
把<plugins>
標簽,放在pom.xml的<build>
標簽內部
<plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <!-- 指定端口 --> <port>82</port> <!-- 項目路徑 --> <path>/</path> </configuration> </plugin> </plugins>
了解私服的概念
搭建私服
公司在自己的局域網內搭建自己的遠程倉庫服務器,稱為私服
私服服務器即是公司內部的 maven 遠程倉庫, 每個員工的電腦上安裝 maven 軟件并且連接私服服務器,員工將自己開發的項目打成 jar 并發布到私服服務器,其它項目組從私服服務器下載所依賴的構件(jar)。
私服還充當一個代理服務器,當私服上沒有 jar 包會從互聯網中央倉庫自動下載,如下圖 :
Nexus 是 Maven 倉庫管理器, 通過 nexus 可以搭建 maven 倉庫,同時 nexus 還提供強大的倉庫管理功能,構件搜索功能等。
下載地址: http://www.sonatype.org/nexus/archived/ ,下載: nexus-2.12.0-01-bundle.zip
1.解壓nexus-2.12.0-01-bundle.zip。注意:解壓路徑里不要有中文、空格、特殊字符
2.以管理員方式打開cmd,切換進入解壓目錄的bin文件夾里,運行命令:nexus.bat install
把nexus安裝成為Windows的服務
啟動nexus服務:以管理員方式打開cmd,輸入命令:net start nexus(第一次啟動比較慢)
如果把nexus服務設置為開機自啟動,以后就不需要再手動啟動nexus服務了
但是通常是nexus服務器上設置。我們自己電腦上,沒有必要設置開機自啟動
關閉nexus服務:以管理員方式打開cmd,輸入命令:net stop nexus
打開瀏覽器,輸入地址:http://localhost:8081/nexus
可以打開nexus的conf/nexus.properties
文件,修改端口號,重啟nexus服務后生效
登錄“Log in”,輸入帳號和密碼進行登錄(帳號admin,密碼admin123)
hosted
:宿主倉庫, 部署自己的 jar 到這個類型的倉庫,包括 releases 和 snapshot 兩部分, Releases 公司內部發布版本倉庫、 Snapshots 公司內部測試版本倉庫
proxy
:代理倉庫, 用于代理遠程的公共倉庫,如 maven 中央倉庫,用戶連接私服,私服自動去中央倉庫下載 jar 包或者插件。
group
:倉庫組,用來合并多個 hosted/proxy 倉庫,通常我們配置自己的 maven 連接倉庫組。
virtual
:虛擬倉庫,兼容 Maven1 版本的 jar 或者插件
hosted:宿主倉庫。nexus私服本身的倉庫
proxy:代理倉庫。私服所代理的倉庫
group:倉庫組。針對于使用者,只要配置一個倉庫組的地址,就可以引用組里定義的所有子庫
virtual:虛擬倉庫
把項目發布到私服
從私服下載jar包
使用場景
企業中多個團隊協作開發通常會將一些公用的組件、開發模塊等發布到私服供其它團隊或模塊開發人員使用。
本例子假設多團隊分別開發。某個團隊開發完在common_utils, 將 common_utils發布到私服供其它團隊使用
配置
第一步:在用戶自己的Maven軟件里修改conf/settings.xml
:
在servers
標簽里,配置私服的帳號和密碼
<server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>
第二步:在用戶需要發布的私服的項目pom.xml里,配置私服倉庫的地址。
本公司的自己的 jar 包會上傳到私服的宿主倉庫,根據工程的版本號決定上傳到哪個宿主倉庫
如果版本為 release 則上傳到私服的 release 倉庫,如果版本為snapshot 則上傳到私服的 snapshot 倉庫
把以下內容寫到項目的pom.xml的根標簽里
<distributionManagement> <repository> <!-- 注意:id的值,是剛剛在settings.xml中配置的server的id --> <id>releases</id> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <!-- 注意:id的值,是剛剛在settings.xml中配置的server的id --> <id>snapshots</id> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
測試
1.啟動nexus服務(如果已啟動,就不需要做這一步)
2.在項目里執行Maven的deploy命令:
根據本項目pom.xml中version定義決定發布到哪個倉庫
如果version定義為xx-snapshot,項目將發布到 nexus 的 snapshot倉庫
如果version定義為xx-release,項目將發布到 nexus的 release 倉庫
使用場景
沒有配置 nexus的時候,如果本地倉庫沒有,就會去中央倉庫下載,下載速度不穩定
通常在企業中會在局域網內部署一臺私服服務器。這樣:
本地項目首先去本地倉庫找 jar;
如果沒有找到則連接私服從私服下載 jar 包;
如果私服沒有 jar 包,私服同時作為代理服務器從中央倉庫下載 jar 包
好處是:
由私服對公司項目的依賴 jar 包統一管理
可以提高下載速度, 項目連接私服下載 jar 包的速度,要比項目連接中央倉庫的速度快的多。
配置
第一步:在settings.xml
的profiles
標簽下配置:
注:由于settings.xml
中沒有repositories
標簽,所以要使用profile
標簽來配置倉庫
<profile> <!--profile 的 id--> <id>dev</id> <repositories> <repository> <!--倉庫 id, repositories 可以配置多個倉庫,保證 id 不重復--> <id>nexus</id> <!--倉庫地址,即 nexus 倉庫組的地址--> <url>http://localhost:8081/nexus/content/groups/public/</url> <!--是否下載 releases 構件--> <releases> <enabled>true</enabled> </releases> <!--是否下載 snapshots 構件--> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <!-- 插件倉庫, maven 的運行依賴插件,也需要從私服下載插件 --> <pluginRepository> <!-- 插件倉庫的 id 不允許重復,如果重復后邊配置會覆蓋前邊 --> <id>public</id> <name>Public Repositories</name> <url>http://localhost:8081/nexus/content/groups/public/</url> </pluginRepository> </pluginRepositories> </profile>
第二步:激活profile
定義的倉庫
激活后,配置的倉庫才會生效
<activeProfiles> <activeProfile>dev</activeProfile> </activeProfiles>
測試 創建Maven應用testdownload
,配置依賴
<dependency> <groupId>com.baidu</groupId> <artifactId>commons-utils</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
編譯項目,查看日志會出現:
查看本地倉庫里,會有從私服下載的jar包
把項目發布到私服:
在Maven的settings.xml里,配置倉庫的帳號和密碼
在Maven項目的pom.xml里,配置倉庫的地址
執行Maven命令:mvn deploy
從私服里下載jar:
在settings.xml里配置倉庫地址
在settings.xml里激活倉庫的配置
在Maven項目里,配置依賴
如果這個依賴,在本地倉庫里沒有,Maven就會從私服里下載到本地倉庫,再引入到Maven項目里
把第三方jar打包到本地倉庫
把jar打包發布到私服
如果有一個jar不在本地倉庫、不在私服、不在中央倉庫。我們可以把jar安裝到本地倉庫中,方便后續使用
cmd
命令示例:
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar
查看本地倉庫,驗證是否安裝成功
第一步:在settings.xml
中配置私服的server信息
<server> <id>thirdparty</id> <username>admin</username> <password>admin123</password> </server>
第二步:執行命令
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
第三步:查看私服的第三方倉庫,驗證是否發布成功
DgroupId
和DartifactId
構成了 jar 包的坐標,項目就是依靠這兩個屬性定位。可以自己起名
Dfile
表示需要上傳的 jar 包的位置。
Durl
私服上倉庫的位置,打開 nexus——>repositories 菜單,可以看到該路徑。
DrepositoryId
服務器的表示 id,在 nexus 的 configuration 可以看到。
Dversion
表示版本信息。
上傳成功后,在 nexus 界面點擊 3rd party 倉庫可以看到這包。
什么是Lombok
Lombok的作用
Lombok的配置
Lombok是一個Java庫,能自動插入編輯器并構建工具,簡化Java開發。
官網: https://www.projectlombok.org/
通過添加注解的方式,幫我們生成一些方法,提高開發人員的開發效率。
例如:
開發中經常需要寫的javabean,要添加相應的getter/setter,也許還要去寫構造器、equals等方法
當屬性多時,會出現大量的getter/setter方法,這些顯得很冗長也沒有太多技術含量
使用Lombok,可以幫我們生成這些方法,我們就不用自己編寫了
添加maven依賴
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency>
安裝插件
注意:Lombok插件暫不支持idea2020
使用Lombok還需要插件的配合。
打開idea的設置,點擊Plugins,點擊Browse repositories,在彈出的窗口中搜索lombok,然后安裝即可
解決編譯時出錯問題
編譯時出錯,可能是沒有enable注解處理器。Annotation Processors > Enable annotation processing。設置完成之后程序正常運行。
目標
@Data
@Getter/@Setter
@ToString
@NoArgsConstructor, @AllArgsConstructor
@Data
@Data注解在類上,會為類的所有屬性自動生成setter/getter、equals、canEqual、hashCode、toString方法,如為final屬性,則不會為該屬性生成setter方法。
@Data public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }
@Getter/@Setter
如果覺得@Data不夠精細,可以使用@Getter/@Setter注解
此注解用在屬性上,可以為相應的屬性自動生成Getter/Setter方法.
public class User implements Serializable{ @Setter @Getter private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }
@ToString
類上使用@ToString注解,Lombok會生成一個toString()
方法
生成的toString
方法會輸出類名、所有屬性(會按照屬性定義順序),用逗號來分割。
通過exclude
屬性指定忽略字段不輸出,
@ToString(exclude = {"id"}) public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }
@xxxConstructor
@NoArgsConstructor: 無參構造器
@NoArgsConstructor public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }
@AllArgsConstructor
: 全參構造器
@AllArgsConstructor public class User implements Serializable{ private Integer id; private String username; private String password; private String address; private String nickname; private String gender; private String email; private String status; }
在pom.xml里添加依賴坐標后,報紅,引入依賴失敗
可能有多方面因素導致,最常見的原因是:
網絡不穩定,導致從中央倉庫中下載依賴時失敗
本地倉庫中有大量的*.lastUpdated
文件,是下載依賴出錯后遺留的不完整數據
第一步:配置阿里云的倉庫鏡像
打開Maven軟件里conf/settings.xml
在<mirrors>
標簽中添加如下內容:
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
第二步:刪除本地倉庫里的緩存文件
以.lastUpdated
結尾的文件,是下載依賴失敗后遺留的文件,需要清除掉
1.在本地倉庫文件夾里搜索*.lastUpdated
2.把搜索到的所有文件全部刪除
第三步:重新添加依賴
在pom.xml
中,刪除原有的所有依賴
重新添加依賴進去。
Maven會自動重新導入依賴,如果本地倉庫中沒有,就會自動從阿里云倉庫鏡像下載依賴
感謝各位的閱讀,以上就是“Maven安裝與環境變量配置教程”的內容了,經過本文的學習后,相信大家對Maven安裝與環境變量配置教程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。