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

高效使用Java構(gòu)建工具|Maven篇|云效工程師指北

這篇具有很好參考價值的文章主要介紹了高效使用Java構(gòu)建工具|Maven篇|云效工程師指北。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

大家好,我是胡曉宇,目前在云效主要負(fù)責(zé)Flow流水線編排、任務(wù)調(diào)度與執(zhí)行引擎相關(guān)的工作。

作為一個有多年Java開發(fā)測試工具鏈開發(fā)經(jīng)驗的CRUD專家,使用過所有主流的Java構(gòu)建工具,對于如何高效使用Java構(gòu)建工具沉淀了一套方法。眾所周知,當(dāng)前最主流的Java構(gòu)建工具為Maven/Gradle/Bazel,針對每一個工具,我將分別從日常工作中常見的場景問題切入,例如依賴管理、構(gòu)建加速、靈活開發(fā)、高效遷移等,針對性地介紹如何高效靈活地用好這3個工具。

高效使用Java構(gòu)建工具|Maven篇|云效工程師指北

Java構(gòu)建工具的前世今生

在上古時代,Java的構(gòu)建都在使用make,編寫makefile來進行Java構(gòu)建有非常多別扭與不便的地方。

緊接著Apache Ant誕生了,Ant可以靈活的定義清理編譯測試打包等過程,但是由于沒有依賴管理的功能,以及需要編寫復(fù)雜的xml,還是存在著諸多的不便。

隨后Apache Maven誕生了,Maven是一個依賴項管理和構(gòu)建自動化工具,遵循著約定大于配置的規(guī)則。雖然也需要編寫xml,但是對于復(fù)雜工程更加容易管理,有著標(biāo)準(zhǔn)化的工程結(jié)構(gòu),清晰的依賴管理。此外,由于Maven本質(zhì)上是一個插件執(zhí)行框架,也提供了一定的開放性的能力,我們可以通過Maven的插件開發(fā),為構(gòu)建構(gòu)成創(chuàng)造一定的靈活性。

但是由于采用約定大于配置的方式,喪失了一定的靈活性,同時由于采用xml管理構(gòu)建過程與依賴,隨著工程的膨脹,配置管理還是會帶來不小的復(fù)雜度,在這個背景下,集合了Ant與Maven各自優(yōu)勢的Gradle誕生了。

Gradle也是一個集合了依賴管理與構(gòu)建自動化的工具。首要的他不再使用XML而是基于Groovy的DSL來描述任務(wù)串聯(lián)起整個構(gòu)建過程,同時也支持插件提供類似于Maven基于約定的構(gòu)建。除了在構(gòu)建依賴管理上的諸多優(yōu)勢之外,Gradle在構(gòu)建速度上也更具優(yōu)勢,提供了強大的緩存與增量構(gòu)建的能力。

除了以上Java構(gòu)建工具之外,Google在2015年開源了一款強大,但上手難度較大的分布式構(gòu)建工具Bazel,具有多語言、跨平臺、可靠增量構(gòu)建的特點,在構(gòu)建上可以成倍提高構(gòu)建速度,因為它只重新編譯需要重新編譯的文件。Bazel也提供了分布式遠(yuǎn)程構(gòu)建和遠(yuǎn)程構(gòu)建緩存兩種方式來幫助提升構(gòu)建速度。

目前業(yè)內(nèi)使用Ant的人已經(jīng)比較少,主要都在用Maven、Gradle和Bazel,如何真正基于這三款工具的特點發(fā)揮出他們最大的效用,是這個系列文章要幫大家解決的問題。先從Maven說起。

優(yōu)雅高效地用好Maven

當(dāng)我們正在維護一個Maven工程時,關(guān)注以下三個問題,可以幫助我們更好的使用Maven。

● 如何優(yōu)雅的管理依賴
● 如何加速我們的構(gòu)建測試過程
● 如何擴展我們自己的插件

優(yōu)雅的依賴管理

在依賴管理中,有以下幾個實踐原則,可以幫助我們優(yōu)雅高效的實現(xiàn)不同場景下的依賴管理。

● 在父模塊中使用dependencyManagement,配置依賴
● 在子模塊中使用dependencies,使用依賴
● 使用profiles,進行多環(huán)境管理

以我在日常開發(fā)中維護的一個標(biāo)準(zhǔn)的spring-boot多模塊Maven工程為例。

高效使用Java構(gòu)建工具|Maven篇|云效工程師指北

工程內(nèi)各個module之間的依賴關(guān)系如下,通常這也是標(biāo)準(zhǔn)的 spring-boot restful api多模塊工程的結(jié)構(gòu)。

高效使用Java構(gòu)建工具|Maven篇|云效工程師指北

便捷的依賴升級

通常我們在依賴升級的時候會遇到以下問題:

● 多個依賴關(guān)聯(lián)升級
● 多個模塊需要一起升級

在父模塊的pom.xml中,我們配置了基礎(chǔ)的spring-boot依賴,也配置了日志輸出需要的logback依賴,可以看出,我們遵循了以下的原則:

(1)在所有子模塊的父模塊中的pom中配置dependencyManagement,統(tǒng)一管理依賴版本。在子模塊中直接配置依賴,不用再糾纏于具體的版本,避免潛在的依賴版本沖突。
(2)把groupId相同的依賴,配置在一起,比如groupId為org.springframework.boot,我們配置在了一起。
(3)把groupId相同,但是需要一組依賴共同提供功能的artifactId,配置在一起,同時將版本號抽取成變量,便于后續(xù)一組功能共同的版本升級。比如spring-boot依賴的版本抽取成了spring-boot.version。

高效使用Java構(gòu)建工具|Maven篇|云效工程師指北
高效使用Java構(gòu)建工具|Maven篇|云效工程師指北

在子模塊bu文章來源地址http://www.zghlxwxcb.cn/news/detail-435280.html

到了這里,關(guān)于高效使用Java構(gòu)建工具|Maven篇|云效工程師指北的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 高效構(gòu)建Java應(yīng)用:Maven入門和進階(五)

    高效構(gòu)建Java應(yīng)用:Maven入門和進階(五)

    5.1 項目需求和結(jié)構(gòu)分析 需求案例:搭建一個電商平臺項目,該平臺包括用戶服務(wù)、訂單服務(wù)、通用工具模塊等。 項目架構(gòu): 用戶服務(wù):負(fù)責(zé)處理用戶相關(guān)的邏輯,例如用戶信息的管理、用戶注冊、登錄等。 訂單服務(wù):負(fù)責(zé)處理訂單相關(guān)的邏輯,例如訂單的創(chuàng)建、訂單支付

    2024年01月19日
    瀏覽(25)
  • 高效構(gòu)建Java應(yīng)用:Maven入門和進階(二)

    高效構(gòu)建Java應(yīng)用:Maven入門和進階(二)

    2.1 梳理Maven工程GAVP屬性 Maven工程相對之前的工程,多出一組gavp屬性,gav需要我們在創(chuàng)建項目的時指定,p有默認(rèn)值,后期通過配置文件修改。既然要填寫的屬性,我們先行了解下這組屬性的含義! Maven 中的 GAVP 是指 GroupId、ArtifactId、Version、Packaging 等四個屬性的縮寫,其中前三

    2024年02月01日
    瀏覽(19)
  • 一、高效構(gòu)建Java應(yīng)用:Maven入門和進階

    一、高效構(gòu)建Java應(yīng)用:Maven入門和進階

    一、Maven簡介和快速入門 1.1 Maven介紹 1.2 Maven主要作用理解 1.3 Maven安裝和配置 二、基于IDEA的Maven工程創(chuàng)建 2.1梳理Maven工程GAVP屬性 2.2 Idea構(gòu)建Maven JavaSE工程 2.3 Idea構(gòu)建Maven JavaEE工程 2.4 Maven工程項目結(jié)構(gòu)說明 三、Maven核心功能依賴和構(gòu)建管理 3.1 依賴管理和配置 3.2依賴傳遞和沖

    2024年02月08日
    瀏覽(20)
  • 【Idea+Maven+Git:構(gòu)建高效Java項目的強大組合】

    【Idea+Maven+Git:構(gòu)建高效Java項目的強大組合】

    在當(dāng)今的軟件開發(fā)世界中,集成開發(fā)環(huán)境(IDE)、構(gòu)建工具和版本控制系統(tǒng)是每個項目不可或缺的組成部分。本文將深入探討這三個工具:IntelliJ IDEA、Maven和Git,以及它們?nèi)绾螀f(xié)同工作,幫助開發(fā)者構(gòu)建更高效、更可靠的項目。上一篇介紹了Git的分支管理策略,本文將介紹相

    2024年02月20日
    瀏覽(26)
  • Java開發(fā)+Intellij-idea+Maven+工程構(gòu)建

    Java開發(fā)+Intellij-idea+Maven+工程構(gòu)建

    Intellij-idea是一款流行的Java集成開發(fā)環(huán)境,它支持Maven作為項目管理和構(gòu)建工具。Maven可以幫助開發(fā)者自動下載項目依賴的jar包,執(zhí)行編譯、測試、打包等生命周期任務(wù)。本資源將介紹如何在Intellij-idea中創(chuàng)建、導(dǎo)入、轉(zhuǎn)換和編譯Maven工程,以及如何配置Maven的相關(guān)參數(shù)和插件。

    2024年02月01日
    瀏覽(103)
  • 使用Maven父工程構(gòu)建spring boot子工程

    使用Maven父工程構(gòu)建spring boot子工程

    注意:子工程引入springboot相關(guān)依賴之后子工程才能被解析為springboot模塊

    2024年02月11日
    瀏覽(22)
  • 【十年網(wǎng)絡(luò)安全工程師整理】—100滲透測試工具使用方法介紹

    ?滲透測試是指滲透人員在不同的位置(比如從內(nèi)網(wǎng)、從外網(wǎng)等位置)利用各種手段對 某個特定網(wǎng)絡(luò)進行測試,以期發(fā)現(xiàn)和挖掘系統(tǒng)中存在的漏洞,然后輸出滲透測試報告, 并提交給網(wǎng)絡(luò)所有者。網(wǎng)絡(luò)所有者根據(jù)滲透人員提供的滲透測試報告, 可以清晰知曉系統(tǒng)中存在的安

    2024年02月02日
    瀏覽(29)
  • 提示工程師:如何高效的向ChatGPT提問對話

    ????????最近ChatGPT真的火出圈了,現(xiàn)在打開知乎、博客、抖音,B站都是這方面的信息,ChatGPT相關(guān)的信息鋪天蓋地的襲轉(zhuǎn)而來。對于這種類似新一輪信息技術(shù)革命,作為普通人的我們,該如何做呢?這是我們該思考的。 ????????英偉達創(chuàng)始人兼CEO黃仁勛:this is the iph

    2023年04月12日
    瀏覽(13)
  • 軟件測試工程師使用Jmeter工具做接口壓力測試(Jmeter配置隨機生成手機號)

    軟件測試工程師使用Jmeter工具做接口壓力測試(Jmeter配置隨機生成手機號)

    背景:性能測試的數(shù)據(jù)準(zhǔn)備時很多情況需要產(chǎn)生一批新的數(shù)據(jù),我們這次主要講述的是如何產(chǎn)生隨機的手機號,以用戶注冊接口為場景、生成隨機手機號作為賬號進行并發(fā)測試。 JMeter壓力測試中設(shè)置線程組的線程數(shù),即執(zhí)行時的并發(fā)用戶數(shù),適用于單個線程組的并發(fā)測試。

    2023年04月19日
    瀏覽(25)
  • 如何高效實現(xiàn)內(nèi)外網(wǎng)切換?是個網(wǎng)絡(luò)工程師,都在用它

    如何高效實現(xiàn)內(nèi)外網(wǎng)切換?是個網(wǎng)絡(luò)工程師,都在用它

    晚上好,我是老楊。 聽我網(wǎng)工交流群里粉絲說,這篇文章《人手一份!思科、華為、H3C交換機命名規(guī)則全收錄》很干貨,不知道你看過+收藏了沒? 我的粉絲除了優(yōu)質(zhì)干貨可以看,必須還有福利可以拿。今日閱讀文章的粉絲福利:《浪潮之巔》高清PDF一份。 ? 編輯切換為居

    2024年02月16日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包