api报错 javaee maven_JavaEE关于Maven的配置与学习
關于Maven的配置與學習
1. 簡介
官方說法:Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.
個人譯文:Apache Maven是一款軟件項目管理及綜合工具?;陧椖繉ο竽P瓦@個概念,Maven能夠從一個中心信息塊管理項目的構建,報告和文檔。
個人對于Maven的直觀感受就是工程項目被生命化了,從一個項目的初始到開發結束,它都在幫助開發者做后援工作,相當于助長劑。對于我來說主要的是項目依賴問題,不用自己去拷jar包確實是方便許多。
2. Windows下安裝和配置
某些IDE已經是集成了Maven了(例如:idea),但是這里還是說一下怎么從官網下載并且配置環境變量
2.1 下載Maven
Maven官網:https://maven.apache.org/
進入官網后可以點擊Download下拉可見有多個下載鏈接。如果不是特殊愛好/用途,下載頭兩個壓縮包其中一個解壓就可以。
2.2 配置Maven
解壓后進入我的電腦(右擊)->屬性->高級系統設置->環境變量,進入后點擊新建..,變量名為M2_HOME,變量值為自己解壓后Maven的位置,我這里為C:\tool\apache-maven-3.5.0
經過上面的配置變量已經有了,但是還需要配置Windows系統變量,這樣才找的到Maven的路徑(在cmd模式下使用mvn命令),這里只需要將%M2_HOME%\bin;加入到Path的最前端就可以了,如下圖:
通過以上的配置在cmd下鍵入mvn -version出來一大串信息,包括Maven路徑、版本等信息就說明配置成功
2.3 配置Maven鏡像和本地倉庫
本地倉庫會從把從別的地方的jar包下載后本地保存,相當于一個緩存,如果說不配置它默認會下載至${user.home}/.m2/repository,如果需要配置到一個特定的目錄只需要進入Maven的解壓目錄/conf/setting.xml文件,使用編輯器打開,然后修改里面的配置C:/...../localRepository
在使用Maven管理依賴時,它可能會去別的倉庫下載jar包,有可能網速會受到限制,所以使用鏡像下載是一個比較好的選擇,這里我使用了阿里的鏡像。
在setting.xml,我們可以看到下方有這一個項,這里只需要向里面添加代碼
alimaven
central
aliyun?maven
http://maven.aliyun.com/nexus/content/groups/public/
3. Maven倉庫
關于Maven的倉庫這里可以簡單的理解為存放jar包的地方,一個云盤。
但是,關于存放的位置還是有略微的區別,有遠近之分,近的看來有本地倉庫和私服遠的有中央倉庫和其他私人倉庫本地倉庫:通過本地存儲依賴包,在項目構建需要時直接提供
私服:由個人/組織搭建,在局域網上的服務器運行,由該服務器提供依賴包
中央倉庫:Maven依賴包的主要來源
其他私人倉庫:需要使用的依賴包在他人服務器而不在在中央倉庫沒有的情況下,需要自己配置遠程的倉庫,它在中央倉庫找不到下會去該倉庫查找,其配置如下:
companyname.lib1
http://download.companyname.org/maven2/lib1
按照個人理解,畫了一個圖,如下:
4. Maven的生命周期
4.1 clean周期
pre-clean
執行一些清理前需要完成的工作
clean
清理上一次構建生成的文件
post-clean
執行一些清理后需要完成的工作
在每一個周期有相應的Maven命令,比如,在重新構建項目需要把前面的清除,則可以在當前項目目錄下cmd模式輸入mvn clean?||?mvn post-clean
4.2 default周期
在default周期中包含了很多個階段,其中這里列出比較常用的
compile
編譯該項目的源代碼
test
運行測試使用合適的單元測試框架
package
提取編譯后的代碼,并在其分發格式打包,如JAR,WAR或EAR文件
install
將包安裝到本地存儲庫,它可以用作當地其他項目的依賴
deploy
復制最終的包到遠程倉庫與其他開發者和項目共享
關于install,可以使用mvn install命令將我們自己的項目添加/安裝到我們的本地倉庫,比如,我們在多模塊開發時,因為項目的依賴有些模塊是完全相同的,所以我們可以建立一個父工程,讓其他相關的模塊繼承該父工程。父工程的打包方式是pom,這里在子工程中編譯項目時就會遇到父工程依賴不存在的一些錯誤,這時就需要使用上述的命令mvn install將我們的項目安裝到本地倉庫。對于Maven工程,自己寫的庫需要打成jar包讓其他項目依賴,也可以使用該命令
4.3 site周期
siet生命周期能夠生成一些網頁信息(基于POM所包含的信息)
pre-site
執行一些在生成項目站點之前需要完成的工作
site
生成項目站點文檔
post-site
執行一些在生成項目站點之后需要完成的工作
site-deploy
將生成的項目站點發布到服務器上
當我使用之前博客上的Spring Boot會員系統測試site命令時執行了mvn site可在項目路徑下看到target/site/index.html,點開后有關于該項目的各種依賴的詳細信息,如下圖:
在上述的周期中對應著各種Maven命令,有些命令可以同時鍵入,比如:mvn clean package,每個命令的執行都與Maven提供的插件有著一些密不可分的關系,這里可以看下這里的鏈接:
https://www.yiibai.com/maven/maven_build_life_cycle.html
https://blog.csdn.net/chaofanwei/article/details/36197183
https://www.cnblogs.com/build-up/p/4975827.html
https://www.cnblogs.com/avivaye/p/5341341.html
5. 項目開發中的Exception
這里舉出兩個例子,其一:
maven打包時報錯:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test
這里可能是因為在打包時會自動執行測試命令,而Junit測試不通過導致的打包不成功,只需要添加下面的配置即可:
org.apache.maven.plugins
maven-surefire-plugin
2.4.2
true
其二:
在web項目中使用servlet和jsp時需要引入依賴來解決錯誤,但是在web發布時打成war包部署到tomcat就會報錯,提示信息大概是類之間有沖突。這是因為tomcat已經有包含了servlet的依賴包,因此報錯,這里只要在servlet和jsp的依賴中加入一個scope配置,如下:
javax.servlet
jsp-api
2.0
provided
在上面的依賴的scope中包含了幾個選項,主要如下:
compile
編譯(compile)時需要,測試時需要,運行時需要,打包時需要
provided
編譯(compile)時需要,測試(test)時也需要 ? ,運行時不需要,打包時不需要
runtime
編譯時不需要,測試時需要,運行時需要,打包時需要
test
編譯時不需要,測試時需要,運行時不需要,打包也不需要
除了以上還有一個是system,但是個人沒有怎么使用所以這里不做說明
6. 總結
關于以上的東西,個人在見解上可能還存在偏差,但是,Maven作為項目管理的一個工具,只需要把工具的主要功能發揮出來就行了。現在該要糾結的不應該是Maven存在的那些復雜的東西,而是把自己的代碼寫好先。
總結
以上是生活随笔為你收集整理的api报错 javaee maven_JavaEE关于Maven的配置与学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 属性被分为八大类不包括_家庭软装八大类有
- 下一篇: 基坑监测日报模板_基坑水平监测日报表