Java學(xué)習(xí)筆記之Maven篇
一、maven能做什么?
【本質(zhì)】:將原材料(各種Java本身的類(lèi),不包括jar包)生產(chǎn)成為可運(yùn)行的工程項(xiàng)目。
Maven - 自動(dòng)化構(gòu)建工具,英文單詞是專(zhuān)家內(nèi)行的意思
1.方便管理jar包,jar包沖突?
2.打包web項(xiàng)目(節(jié)省jar包空間)
1.1 兩大應(yīng)用
【依賴(lài)管理】maven的jar包放在jar包倉(cāng)庫(kù),maven只存儲(chǔ)jar包的坐標(biāo)。(代碼重用思想)
【一鍵構(gòu)建】編譯、測(cè)試、運(yùn)行、打包、安裝、部署 操作一體化
【POM:Project Object Model 工程對(duì)象模型
【pom.xml】:maven工程核心配置文件(裝載依賴(lài))[同動(dòng)態(tài)web中的web.xml]
【部署】:把編譯結(jié)果“拿到”服務(wù)器指定目錄下
1.2 maven 的核心
1.依賴(lài)管理:
POM項(xiàng)目對(duì)象模型,里面配置的是 ①項(xiàng)目自身的信息 ②項(xiàng)目所依賴(lài)的jar包的信息 ③項(xiàng)目運(yùn)行環(huán)境的信息:jdk、tomcat信息。
依賴(lài)的jar包又涉及到依賴(lài)管理模型:公司的名稱(chēng)、項(xiàng)目名稱(chēng)、版本號(hào)
2.一鍵構(gòu)建:maven默認(rèn)生命周期

二、maven結(jié)構(gòu):
【maven安裝】:本身就是綠化版,我們需要做的事情是配置好相關(guān)的環(huán)境變量和settings
【maven目錄】:
| bin: | mvn.cmd命令 |
| boot: | 類(lèi)加載器 |
| config: | settings.xml |
| lib: | 有各種各樣的jar包 |
2.1 maven工程標(biāo)準(zhǔn)目錄結(jié)構(gòu)
核心代碼 src/main/java 配置文件 src/main/resources 測(cè)試代碼 src/test/java 測(cè)試配置 src/test/resources 頁(yè)面資源(jsp、css):src/main/webapp
2.2 配置系統(tǒng)變量
【1】MAVEN_HOME:就是maven的五臟都在的那個(gè)位置
【2】PATH:找到%MAVEN_HOME%\bin,里面有mvn的啟動(dòng)文件
【3】config/settings.xml中
<!-- localRepository 重新編寫(xiě)再維護(hù)
| The path to the local repository maven will use to store artifacts. |
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>B:\Environment\maven\maven_repository</localRepository>
坐標(biāo):
groupid:com.公司/組織.項(xiàng)目名
artifactid:模塊名
version:版本
2.3 常用命令
mvn clean == 清除項(xiàng)目編譯信息(每個(gè)人的編譯結(jié)果不一樣,在新的環(huán)境下運(yùn)行需要清除原有的東西) mvn compile == javac,編譯出新的.class文件保存在target目錄里面 mvn test == main和test都編譯了 mvn package == 打成了war包,在pom.xml中可以配置打成什么格式。 mvn install == 把項(xiàng)目打在了本地倉(cāng)庫(kù) mvn deploy
幾個(gè)小問(wèn)題:
1.生命周期
編譯,測(cè)試,打包,安裝,發(fā)布
(清除生命周期)默認(rèn)生命周期~~生老病死,(站點(diǎn)生命周期)
2.maven工程查找倉(cāng)庫(kù)的流程是什么?
pom.xml尋求依賴(lài)的jar包:一般的
先去本地倉(cāng)庫(kù)找jar包,再到遠(yuǎn)程倉(cāng)庫(kù)【私服】,在同一局域網(wǎng)就可以下載,最后才是中央倉(cāng)庫(kù)。
①maven中央倉(cāng)庫(kù)(地址:http://repo2.maven.org/maven2/)
②maven私服(公司局域網(wǎng)內(nèi)的倉(cāng)庫(kù),需要自己搭建)
③其他公共遠(yuǎn)程倉(cāng)庫(kù)(例如apache提供的遠(yuǎn)程倉(cāng)庫(kù),地址:http://repo.maven.apache.org/maven2/)
三、應(yīng)用:idea集成maven插件
3.1 步驟
基本配置
【1】先在setting中配置maven_home、settings.xml
在runner配置先從本地獲取插件(加上-DarchetypeCatalog=internal)
【2】使用骨架創(chuàng)建maven工程:
手動(dòng)補(bǔ)齊resources作為資源根目錄
不使用骨架模板構(gòu)建maven工程:自帶main(java、resources)、test目錄
使用骨架,找到mavenwebapp的原型:maven-archetype-webapp
【3】指定web資源包
創(chuàng)建servlet,導(dǎo)入jar包==》pom.xml里面導(dǎo)入jar包(配置依賴(lài)的groupId群組Id、artifactId工程Id、version版本)
兩種方式導(dǎo)入jar包:(一般都看不到)
【本地】項(xiàng)目名稱(chēng):配置servlet-api、jsp-api、公司名稱(chēng)、版本號(hào)
【網(wǎng)絡(luò)】https://mvnrepository.com/
依賴(lài)書(shū)寫(xiě)規(guī)范:
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
scope:

3.2 Tips
servlet-api包沖突
maven一鍵構(gòu)建在【集成插件】中
設(shè)置scope是提供了的provided
用完之后要停止項(xiàng)目,避免端口占用
使用live Templates模板 確定tomcat maven-compiler-plugin選定JDK
3.3 基本配置總結(jié)
pom.xml是Maven項(xiàng)目的核心配置文件,位于每個(gè)工程的根目錄,基本配置如下: <project > :文件的根節(jié)點(diǎn) . <modelversion > : pom.xml使用的對(duì)象模型版本 <groupId > :項(xiàng)目名稱(chēng),一般寫(xiě)項(xiàng)目的域名 <artifactId > :模塊名稱(chēng),子項(xiàng)目名或模塊名稱(chēng) <version > :產(chǎn)品的版本號(hào) . <packaging > :打包類(lèi)型,一般有jar、war、pom 等 <name > :項(xiàng)目的顯示名,常用于 Maven 生成的文檔。 <description > :項(xiàng)目描述,常用于 Maven 生成的文檔 <dependencies> :項(xiàng)目依賴(lài)構(gòu)件配置,配置項(xiàng)目依賴(lài)構(gòu)件的坐標(biāo) <build> :項(xiàng)目構(gòu)建配置,配置編譯、運(yùn)行插件等。
四、示例
maven工程獲取mysql數(shù)據(jù)(使用maven訪問(wèn)持久層)
package com.xianzai.demo.dao.impl;
import com.xianzai.demo.dao.StudentDao;
import com.xianzai.demo.pojo.StudentModel;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class StudentImpl implements StudentDao {
public List<StudentModel> findOne() {
List<StudentModel> list = new ArrayList<StudentModel>();
try {
String sql = "select * from stulist";
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3308/hzyc98", "root", "mysql");
PreparedStatement ps = conn.prepareCall(sql);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
StudentModel stu = new StudentModel();
stu.setCollege(rs.getString("college"));
stu.setName(rs.getString("sname"));
stu.setId(rs.getString("id"));
list.add(stu);
}
System.out.println(list);
rs.close();
ps.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
return list;
}
}
到此這篇關(guān)于Java學(xué)習(xí)筆記之Maven篇的文章就介紹到這了,更多相關(guān)Java Maven內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAXB命名空間_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JAXB命名空間的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Spring?Data?Elasticsearch?5.0.x修改數(shù)據(jù)后無(wú)法立即刷新解決方法示例
這篇文章主要為大家介紹了Spring?Data?Elasticsearch?5.0.x修改數(shù)據(jù)后無(wú)法立即刷新解決方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Java客戶端調(diào)用.NET的WebService實(shí)例
下面小編就為大家?guī)?lái)一篇Java客戶端調(diào)用.NET的WebService實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
解決java后臺(tái)登錄前后cookie不一致問(wèn)題
本文主要介紹了java后臺(tái)登錄前后cookie不一致的解決方案,具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12
Java實(shí)現(xiàn)Swing組件定制Button示例
這篇文章主要介紹了Java實(shí)現(xiàn)Swing組件定制Button,涉及java Swing組件Button相關(guān)屬性設(shè)置與使用操作技巧,需要的朋友可以參考下2018-01-01
Java數(shù)據(jù)結(jié)構(gòu)之圖(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
本文章主要講解學(xué)習(xí)如何使用JAVA語(yǔ)言以鄰接表的方式實(shí)現(xiàn)了數(shù)據(jù)結(jié)構(gòu)---圖(Graph)。對(duì)java數(shù)據(jù)結(jié)構(gòu)之圖相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2017-04-04
關(guān)于mybatis使用${}時(shí)sql注入的問(wèn)題
這篇文章主要介紹了關(guān)于mybatis使用${}時(shí)sql注入的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12

