本文中將介紹maven的自定義插件(入門實戰)自定義archeType模板(實戰)按環境打包(實戰)三個在游戲中常常需用的操作。
成都創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站制作、成都做網站、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的唐山網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!我們在創建maven項目的時候,你會發現有這么多的apache提供的模板。?
或者使用mvn archetype:generate命令來快速創建maven項目,也會有很多個選項,讓你選擇模板序號。那每個模板之間有什么區別呢?
每個模板里其實就是附帶不同的依賴和插件。一般在公司游戲里都會有屬于本公司的一套archeType模板,里面有著調試好的項目用到的依賴包和版本號。
假如自己已經有了一個maven項目,想給該項目創建一個archeType模板。
cd 到項目根目錄下執行(pom.xml同級目錄)。
此時會在項目target下生成這些文件:
先 cdtarget/generated-sources/archetype/
然后執行 mvn install
執行成功后,執行crawl命令,在本地倉庫的根目錄生成archetype-catalog.xml骨架配置文件:
mvnarchetype:crawl
來看一看它里面的內容:
執行mvn archetype:generate -DarchetypeCatalog=local從本地archeType模板中創建項目。
然后會讓你選擇模板序號和groupId?artifactId?version和package信息:
項目創建成功!
當然,也可以使用IDEA來幫我們用圖形界面使用archeType模板創建項目:
后面的就與創建普通項目相同了,不做演示。
在這里我只是做了簡單的示例,更復雜的功能開發請參考mojo的API:
https://maven.apache.org/developers/mojo-api-specification.html
插件提供者項目結構:
2.1.1、修改packaging
2.1.2、修改pom
這兩個依賴是自定義插件必須的依賴,代表了它是一個Mojo工程,里面包含了一些Mojo的接口和抽象類以及注解。
2.1.3、coding業務邏輯
注意這里面的@Parameter?@Mojo?LifecyclePhase.PACKAGE都是org.apache.maven.plugins.annotations包下的:
@Parameter注解會獲取消費者配置文件中的變量值并賦值。
defaultPhase =LifecyclePhase.PACKAGE聲明了該插件觸發的生命周期。
@Mojo定義插件的goal名字。
2.1.4、clean and install
執行mvn clean install,在target目錄下會生成這樣一個jar包,這就是插件包。
插件消費者 : 項目結構
2.2.1、修改pom
如果不加,我們只能通過執行插件或者執行命令的方式來執行,如果想讓它在執行package的時候自動執行,就需要設置該屬性,可以把它理解成hook。
2.2.2、如何傳遞參數給plugin
在插件提供者中,有個MyMojo的類,有這樣一段代碼:
它和你用過的spring注解一樣,也是用來以注解的形式獲取參數的值。
相對應的,在插件消費者的配置中我們就應該相應的給出參數的定義:
上面的配置與變量名一一對應即可。這時候你會發現maven插件中自動會添加一個plugins選項:
執行該插件:mvnmyprovide:fantj 或者直接點擊:
在日常開發中,我們項目的開發環境和生產環境以及測試環境往往是不同的,比如:數據庫的url等。在項目上生產環境時,就需要修改這些參數,給開發造成不便。為了解決該問題,Maven 2.0引入了構建配置文件的概念(build profiles)。
假如你的生產環境和開發環境所需環境配置不同,生產環境配置文件是pro.properties,開發環境配置文件是dev.properties,那么用maven profile ,你可以實現打包開發環境jar包的時候只將dev.properties打包并使用,生產環境打包同理。
它可以在每個項目的pom.xml文件中聲明,也可以在maven的用戶setting.xml下聲明,也可以在maven全局環境下設置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,因為不見得每個項目的生產環境都一模一樣,當然這個也是因個人情況而異。
可以看到只將pro/application.properties進行了編譯。
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:Maven的這三個用法你一定要會!-創新互聯
標題鏈接:http://vcdvsql.cn/article38/ddhppp.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、網站維護、網站策劃、網站改版、商城網站、面包屑導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯