日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven的这三个用法你一定要会!

發(fā)布時間:2025/3/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven的这三个用法你一定要会! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文中將介紹maven的自定義插件(入門實戰(zhàn))自定義archeType模板(實戰(zhàn))按環(huán)境打包(實戰(zhàn))三個在私服中常常需用的操作。

1、自定義archeType模板的創(chuàng)建

1.1、什么是archeType

我們在創(chuàng)建maven項目的時候,你會發(fā)現有這么多的apache提供的模板。?

或者使用mvn archetype:generate命令來快速創(chuàng)建maven項目,也會有很多個選項,讓你選擇模板序號。那每個模板之間有什么區(qū)別呢?

每個模板里其實就是附帶不同的依賴和插件。一般在公司私服里都會有屬于本公司的一套archeType模板,里面有著調試好的項目用到的依賴包和版本號。

1.2、創(chuàng)建archetype

假如自己已經有了一個maven項目,想給該項目創(chuàng)建一個archeType模板。

cd 到項目根目錄下執(zhí)行(pom.xml同級目錄)。

此時會在項目target下生成這些文件:

1.3、生成archetype模板

先 cdtarget/generated-sources/archetype/

然后執(zhí)行 mvn install

執(zhí)行成功后,執(zhí)行crawl命令,在本地倉庫的根目錄生成archetype-catalog.xml骨架配置文件:

mvnarchetype:crawl

來看一看它里面的內容:

1.4、使用archetype模板

執(zhí)行mvn archetype:generate -DarchetypeCatalog=local從本地archeType模板中創(chuàng)建項目。

然后會讓你選擇模板序號和groupIdartifactIdversion和package信息:

項目創(chuàng)建成功!

當然,也可以使用IDEA來幫我們用圖形界面使用archeType模板創(chuàng)建項目:

后面的就與創(chuàng)建普通項目相同了,不做演示。

2、自定義插件

在這里我只是做了簡單的示例,更復雜的功能開發(fā)請參考mojo的API:

https://maven.apache.org/developers/mojo-api-specification.html

2.1、插件提供者

插件提供者項目結構:

2.1.1、修改packaging

2.1.2、修改pom

這兩個依賴是自定義插件必須的依賴,代表了它是一個Mojo工程,里面包含了一些Mojo的接口和抽象類以及注解。

2.1.3、coding業(yè)務邏輯

注意這里面的@Parameter@MojoLifecyclePhase.PACKAGE都是org.apache.maven.plugins.annotations包下的:

@Parameter注解會獲取消費者配置文件中的變量值并賦值。

defaultPhase =LifecyclePhase.PACKAGE聲明了該插件觸發(fā)的生命周期。

@Mojo定義插件的goal名字。

2.1.4、clean and install

執(zhí)行mvn clean install,在target目錄下會生成這樣一個jar包,這就是插件包。

2.2、插件消費者

插件消費者 : 項目結構

2.2.1、修改pom

如果不加,我們只能通過執(zhí)行插件或者執(zhí)行命令的方式來執(zhí)行,如果想讓它在執(zhí)行package的時候自動執(zhí)行,就需要設置該屬性,可以把它理解成hook。

2.2.2、如何傳遞參數給plugin

在插件提供者中,有個MyMojo的類,有這樣一段代碼:

它和你用過的spring注解一樣,也是用來以注解的形式獲取參數的值。

相對應的,在插件消費者的配置中我們就應該相應的給出參數的定義:

上面的配置與變量名一一對應即可。這時候你會發(fā)現maven插件中自動會添加一個plugins選項:

執(zhí)行該插件:mvnmyprovide:fantj 或者直接點擊:

3、Profile按環(huán)境打包

在日常開發(fā)中,我們項目的開發(fā)環(huán)境和生產環(huán)境以及測試環(huán)境往往是不同的,比如:數據庫的url等。在項目上生產環(huán)境時,就需要修改這些參數,給開發(fā)造成不便。為了解決該問題,Maven 2.0引入了構建配置文件的概念(build profiles)。

它能干什么呢?

假如你的生產環(huán)境和開發(fā)環(huán)境所需環(huán)境配置不同,生產環(huán)境配置文件是pro.properties,開發(fā)環(huán)境配置文件是dev.properties,那么用maven profile ,你可以實現打包開發(fā)環(huán)境jar包的時候只將dev.properties打包并使用,生產環(huán)境打包同理。

在哪里聲明呢?

它可以在每個項目的pom.xml文件中聲明,也可以在maven的用戶setting.xml下聲明,也可以在maven全局環(huán)境下設置setting.xml,詳情如下。

1.Per Project

Defined in the POM itself (pom.xml).

2.Per User

Defined in the Maven-settings(%USER_HOME%/.m2/settings.xml)

3.Global

Defined in the globalMaven-settings (${maven.home}/conf/settings.xml)

4.Profile descriptor

不支持3.0,詳情請看:

https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-profiles.xml

雖然有這么多define的方式,但是我們一般使用的是第一種defined in the pom,因為不見得每個項目的生產環(huán)境都一模一樣,當然這個也是因個人情況而異。

?

實戰(zhàn)

3.1、項目結構

3.2、pom.xml

3.3、三個application.properties

3.4、打包

?

可以看到只將pro/application.properties進行了編譯。

本教程中的項目源碼:

https://github.com/fantj/maven-tutorial

總結

以上是生活随笔為你收集整理的Maven的这三个用法你一定要会!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。