国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2)

這篇具有很好參考價值的文章主要介紹了學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Maven核心概念

統(tǒng)一管理目標jar包的版本

以對Spring的jar包依賴為例:Spring的每一個版本中都包含spring-context,springmvc等jar包。我們應該導入版本一致的Spring jar包,而不是使用4.0.0的spring-context的同時使用4.1.1的springmvc。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>4.0.0.R

問題是如果我們想要將這些jar包的版本統(tǒng)一升級為4.1.1,是不是要手動一個個修改呢?顯然,我們有統(tǒng)一配置的方式:

<!--統(tǒng)一管理當前模塊的jar包的版本-->
<properties>
    <spring.version>4.0.0.RELEASE</spring.version>
</properties>

……
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${spring.version}</version>
</dependency>

這樣一來,進行版本調(diào)整的時候只改一改地方就行了

倉庫

1)分類
(1)本地倉庫:為當前本機電腦上的所有Maven工程服務。
(2)遠程倉庫
①私服:架設(shè)在當前局域網(wǎng)環(huán)境下,為當前局域網(wǎng)范圍內(nèi)的所有Maven工程服務。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
②中央倉庫:架設(shè)在Internet上,為全世界所有Maven工程服務。
③中央倉庫的鏡像:架設(shè)在各個大洲,為中央倉庫分擔流量。減輕中央倉庫的壓力,同時更快的響應用戶請求。
2)倉庫中的文件
(1)Maven的插件
(2)我們自己開發(fā)的項目的模塊
(3)第三方框架或工具的jar包
不管是什么樣的jar包,在倉庫中都是按照坐標生成目錄結(jié)構(gòu),所以可以通過統(tǒng)一的方式查詢或依賴。

生命周期

1)什么是Maven的生命周期?
Maven生命周期定義了各個構(gòu)建環(huán)節(jié)的執(zhí)行順序,有了這個清單,Maven就可以自動化的執(zhí)行構(gòu)建命令了。
Maven有三套相互獨立的生命周期,分別是:
a.Clean Lifecycle在進行真正的構(gòu)建之前進行一些清理工作。
b.Default Lifecycle構(gòu)建的核心部分,編譯,測試,打包,安裝,部署等等。
c.Site Lifecycle生成項目報告,站點,發(fā)布站點。
再次強調(diào)一下它們是相互獨立的,你可以僅僅調(diào)用clean來清理工作目錄,僅僅調(diào)用site來生成站點。當然你也可以直接運行mvn clean install site運行所有這三套生命周期。
每套生命周期都由一組階段(Phase)組成,我們平時在命令行輸入的命令總會對應于一個特定的階段。比如,運行mvn clean,這個clean是Clean生命周期的一個階段。有Clean生命周期,也有clean階段。
2)clean生命周期
Clean生命周期一共包含了三個階段:
a.pre-clean 執(zhí)行一些需要在clean之前完成的工作
b.clean 移除所有上一次構(gòu)建生成的文件
c.post-clean 執(zhí)行一些需要在clean之后立刻完成的工作
3)Site生命周期
a.pre-site執(zhí)行一些需要在生成站點文檔之前完成的工作
b.site生成項目的站點文檔
c.post-site執(zhí)行一些需要在生成站點文檔之后完成的工作,并且為部署做準備
d.site-deploy將生成的站點文檔部署到特定的服務器上
這里經(jīng)常用到的是site階段和site-deploy階段,用以生成和發(fā)布Maven站點,這可是Maven相當強大的功能,Manager比較喜歡,文檔及統(tǒng)計數(shù)據(jù)自動生成,很好看。
4)Default生命周期
Default生命周期是Maven生命周期中最重要的一個,絕大部分工作都發(fā)生在這個生命周期中。這里,只解釋一些比較重要和常用的階段。
validate
generate-sources
process-sources
generate-resources
process-resources 復制并處理資源文件,至目標目錄,準備打包。
compile 編譯項目的源代碼。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 復制并處理資源文件,至目標測試目錄。
test-compile 編譯測試源代碼。
process-test-classes
test 使用合適的單元測試框架運行測試。這些測試代碼不會被打包或部署。
prepare-package
package 接受編譯好的代碼,打包成可發(fā)布的格式,如JAR。
pre-integration-test
integration-test
post-integration-test
verify
install將包安裝至本地倉庫,以讓其它項目依賴。
deploy將最終的包復制到遠程的倉庫,以讓其它開發(fā)人員與項目共享或部署到服務器上運行。
5)生命周期與自動化構(gòu)建
運行任何一個階段的時候,它前面的所有階段都會被運行,例如我們運行mvn install 的時候,代碼會被編譯,測試,打包。這就是Maven為什么能夠自動執(zhí)行構(gòu)建過程的各個環(huán)節(jié)的原因。此外,Maven的插件機制是完全依賴Maven的生命周期的,因此理解生命周期至關(guān)重要。

插件和目標

(1)Maven的核心僅僅定義了抽象的生命周期,具體的任務都是交由插件完成的。
(2)每個插件都能實現(xiàn)多個功能,每個功能就是一個插件目標。
(3)Maven的生命周期與插件目標相互綁定,以完成某個具體的構(gòu)建任務。
例如:compile就是插件maven-compiler-plugin的一個功能;pre-clean是插件maven-clean-plugin的一個目標。

繼承

為什么需要繼承機制

由于非compile范圍的依賴信息是不能在“依賴鏈”中傳遞的,所以有需要的工程只能單獨配置。例如:
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
此時如果項目需要將各個模塊的junit版本統(tǒng)一為4.9,那么到各個工程中手動修改無疑是非常不可取的。使用繼承機制就可以將這樣的依賴信息統(tǒng)一提取到父工程模塊中進行統(tǒng)一管理

創(chuàng)建父工程

(1)父工程的打包方式為pom

<groupId>com.atguigu.maven</groupId>
	<artifactId>Parent</artifactId>
	<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

(2)父工程只需要保留pom.xml文件即可。

在子工程中引用父工程

在子工程中引用父工程

(1)父工程坐標

<parent>
	<!-- 父工程坐標 -->
	<groupId>...</groupId>
		<artifactId>...</artifactId>
	<version>...</version>
	<!--指定從當前pom.xml文件出發(fā)尋找父工程的pom.xml文件的相對路徑-->
	<relativePath>..</relativePath>
</parent>

(2)繼承

<!--繼承-->
<parent>
    <groupId>com.atguigu.maven</groupId>
    <artifactId>Parent</artifactId>
    <version>1.0-SNAPSHOT</version>
	
	<!--指定從當前pom.xml文件出發(fā)尋找父工程的pom.xml文件的相對路徑-->
	<relativePath>../Parent/pom.xml</relativePath>
</parent>

此時,如果子工程的groupId和version如果和父工程重復則可以刪除。

在父工程中管理依賴

(1)將Parent項目中的dependencies標簽,用dependencyManagement標簽括起來。

<!--依賴管理-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

(2)在子項目中重新指定需要的依賴,刪除范圍和版本號。

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
</dependency>

聚合

為什么要使用聚合

將多個工程拆分為模塊后,需要手動逐個安裝到倉庫后依賴才能夠生效。修改源碼后也需要逐個手動進行clean操作。而使用了聚合之后就可以批量進行Maven工程的安裝、清理工作。

如何配置聚合

在總的聚合工程中使用modules/module標簽組合,指定模塊工程的相對路徑即可。

<!--聚合-->
<modules>
    <module>../MakeFriend</module>
    <module>../OurFriends</module>
    <module>../HelloFriend</module>
    <module>../Hello</module>
</modules>

Maven可以根據(jù)各個模塊的繼承和依賴關(guān)系自動選擇安裝的順序。

Maven酷站

我們可以到http://mvnrepository.com/搜索需要的jar包的依賴信息。
http://search.maven.org/

Maven生產(chǎn)環(huán)境所遇到的問題

jar未下載完成

在使用maven過程中,我們所使用的jar包是會到中央倉庫中進行下載的,但是如果再下載過程中因為網(wǎng)絡不通暢等原因,會導致jar包下載失敗,并且會形成一個xxxx.lastupdated的文件,但是此時maven并不會將其刪掉后重新下載,而是認為它下載過了,我們需要做的是將.xxxxlastupdated文件手動刪除后,再次重新下載。

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.0</version>
	<scope>test</scope>
</dependency>

1)問題模擬
(1)在項目導入了maven依賴,在倉庫中發(fā)現(xiàn)目前沒有這個依賴。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
(2)此刻電腦沒有網(wǎng)絡
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
(3)點擊maven的刷新后,maven會去下載,但是下載不下來。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
(4)最終在本地倉庫會形成一下模樣。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
(5)并且連接上網(wǎng)絡后并不會繼續(xù)下載,形成如下模樣。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
2)解決方案1
手動刪除.lastupdate文件,讓其重新下載就好了。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
3)解決方案2
直接在倉庫下搜索.lastupdated文件,然后ctrl+a全選后ctrl+d刪除 就能直接刪掉所有沒下載號的jar包。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)

jar包沖突問題

jar包沖突往往是發(fā)生在,同一個項目在運行時導入了兩個相同jar包的不同版本,又因為兩個不同版本的jar包代碼是不一樣的,是沖突的,導致在運行時,報出各種莫名其妙的錯誤。
1)問題描述
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)
以上依賴中,thymeleaf-spring5–3.0.12是天然依賴于thymeleaf的3.0.12版本的依賴的,但是因為我們自己的導入是thymeleaf 3.0.11版本,這兩個版本代碼差距巨大,就會導致jar包沖突問題。
2)解決方案
要么不要導入3.0.11版本依賴,或者你選在將thymeleaf-spring5–3.0.12的依賴中的thymeleaf的3.0.12
版本排除掉(圖解是排除的方式)。
學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2),java,學習,大數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-861695.html

到了這里,關(guān)于學習大數(shù)據(jù),所需要的java(Maven)基礎(chǔ)(2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Maven基礎(chǔ)學習---2、Maven安裝與配置

    Maven基礎(chǔ)學習---2、Maven安裝與配置

    1、Maven官網(wǎng)地址 首頁: Maven – Welcome to Apache Maven(opens new window) 下載頁面: Maven – Download Apache Maven(opens new window) 下載鏈接: 具體下載地址:https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.zip?spm=wolai.workspace.0.0.4e7d4a02wt3aKNfile=apache-maven-3.8.6-bin.zip 實在不行我給大家

    2024年02月05日
    瀏覽(17)
  • Java研學-Maven基礎(chǔ)

    Java研學-Maven基礎(chǔ)

    ??Maven是一個跨平臺的項目管理工具,主要用于基于 Java 平臺的項目(Maven 底層為Java)構(gòu)建、依賴包管理和項目信息管理,只需要運行一條簡單的命令,就能高效的完成構(gòu)建動作 ??Maven 能提供一種項目的依賴配置,配置好的項目,Maven 能自動的從 Maven 的中央倉庫中下載

    2024年01月17日
    瀏覽(24)
  • 機器學習/深度學習需要掌握的linux基礎(chǔ)命令

    很多深度學習/機器學習/數(shù)據(jù)分析等領(lǐng)域(或者說大多數(shù)在Python環(huán)境下進行操作的領(lǐng)域)的初學者入門時是在Windows上進行學習,也得益于如Anaconda等工具把環(huán)境管理做的如此友善 但如果想在該領(lǐng)域繼續(xù)深耕,一定會與Linux操作系統(tǒng)打交道,經(jīng)常有人問是否需要系統(tǒng)的學習一遍

    2024年02月13日
    瀏覽(74)
  • Maven 基礎(chǔ)學習及使用

    Maven 基礎(chǔ)學習及使用

    Maven是專門用于管理和構(gòu)建Java項目的工具,它的主要功能有: 提供了一套標準化的項目結(jié)構(gòu) 提供了一套標準化的構(gòu)建流程(編譯,測試,打包,發(fā)布……) 提供了一套依賴管理機制 標準化的項目結(jié)構(gòu): 項目結(jié)構(gòu)我們都知道,每一個開發(fā)工具(IDE)都有自己不同的項目結(jié)構(gòu)

    2024年02月13日
    瀏覽(54)
  • Java課題筆記~Maven基礎(chǔ)

    Java課題筆記~Maven基礎(chǔ)

    下載安裝 配置:修改安裝目錄/conf/settings.xml 本地倉庫:存放的是下載的jar包 中央倉庫:要從哪個網(wǎng)站去下載jar包 - 阿里云的倉庫 ? ? ? ?

    2024年02月14日
    瀏覽(20)
  • 學習大數(shù)據(jù),所必需的java基礎(chǔ)(6)

    學習大數(shù)據(jù),所必需的java基礎(chǔ)(6)

    1.概述:set是一個接口,是Collection下的子接口 2.使用: a.所用的方法和Collection接口中的方法一模一樣 b.set接口中的方法并沒有堆Collection中的方法進行任何的擴充 c.set以及下面所有的實現(xiàn)類集合相當是一個傀儡 因為所用的set集合底層都是依靠map集合實現(xiàn)的 1.概述:HashSet是Se

    2024年03月09日
    瀏覽(42)
  • 學習網(wǎng)安需要了解的一些基礎(chǔ)知識

    學習網(wǎng)安需要了解的一些基礎(chǔ)知識

    1.POC/EXP POC(proof of concept)常指一段漏洞驗證代碼;EXP(exploit)指利用系統(tǒng)漏洞進行攻擊的動作 PoC是證明 漏洞 存在的,而? Exp ?是利用這個 漏洞 進一步進行攻擊,先有POC,才有EXP???????? 2.Payload/shellcode payload(有效攻擊負載) 指的是漏洞利用載荷利用管道,我們在漏洞利用成

    2024年02月11日
    瀏覽(20)
  • 【Java架構(gòu)-包管理工具】-Maven基礎(chǔ)(一)

    【Java架構(gòu)-包管理工具】-Maven基礎(chǔ)(一)

    Maven作為Java后端使用頻率非常高的一款依賴管理工具,在此咱們由淺入深,分三篇文章(Maven基礎(chǔ)、Maven進階、私服搭建)來深入學習Maven,此篇為開篇主要介紹Maven概念、模型、安裝配置、基本命令 ??Maven是跨平臺的項目管理工具,主要服務于Java平臺的項目構(gòu)建和依賴管理

    2024年02月11日
    瀏覽(18)
  • Java框架基礎(chǔ)--maven,http,postman

    Java框架基礎(chǔ)--maven,http,postman

    maven ????????Maven 提供了一個標準的構(gòu)建生命周期和一組約定的目錄結(jié)構(gòu),以簡化和規(guī)范項目的構(gòu)建過程。它主要用于 Java 項目,但也可以用于其他類型的項目。提高了項目的可維護性、可重復性和一致性,簡化了構(gòu)建和依賴管理的復雜性,使得開發(fā)者能夠更專注于項目的

    2024年02月03日
    瀏覽(19)
  • 【Java基礎(chǔ)】I/O流 —— Java中的流都需要關(guān)閉嗎?

    【Java基礎(chǔ)】I/O流 —— Java中的流都需要關(guān)閉嗎?

    一、為什么要關(guān)閉流? 涉及到對外部資源的讀寫操作,包括網(wǎng)絡、硬盤等等的I/O流,如果在使用完畢之后不關(guān)閉,會導致資源泄漏以及可能會引起文件鎖定等問題。因此,需要在使用完畢之后關(guān)閉流。 關(guān)閉流是一種資源釋放機制,意味著在使用完畢之后歸還系統(tǒng)的內(nèi)存、C

    2024年02月12日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包