構建工具之Maven的使用(一)

IT大獅兄發表於2021-08-20

一、前言

對於開發一個Java專案,上線之前會通過編譯,測試,打包,部署這幾個構建過程,如果檔案較少,我們可以使用java-->javac-->jar這些命令去完成上述的構建流程。但是當工程越來越大,檔案越來越多。Java原生的命令就顯得捉襟見肘,力不存心了。Maven基於POM管理jar包依賴,通過自身的生命週期實現專案的構建流程。具體構建原理可自行百度/谷歌。本文主要為大家分享一些比較實用的maven使用技巧。

二、配置技巧

1. 多辦公環境開發配置技巧

在公司辦公時,依賴包載入會用公司的私服;在家辦公時,依賴包載入會用阿里/網易等國內映象。辦公環境切換時,我們想通過簡單的方式切換,而不是每次都更改maven的settings配置檔案,怎麼辦呢?可參考如下方案:

<settings>
  	<profile>
        <id>company</id>
        <repositories>
            <repository>
                <id>nexus</id>
                <name>nexus-repositories</name>
                <url>http://xxxx.xxxx.xxx:xxxx/nexus/content/repositories</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                    <checksumPolicy>warn</checksumPolicy>
                </releases>
                <snapshots>
                  	<enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>
  	<profile>
        <id>home</id>
        <repositories>
            <repository>
                <id>aliyun</id>
                <name>central</name>
                <url>https://maven.aliyun.com/repository/central</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
        </repositories>
    </profile>
		<activeProfiles>
        <activeProfile>company</activeProfile>
        <activeProfile>home</activeProfile>
  </activeProfiles>
</settings>

配置完之後,idea會在側邊欄出現可選框,點選相應的辦公環境即可,再次打包即可。
如下圖:
maven_multi_office

2. 構建日誌輸出配置技巧

打包時,我們會注意到構建日誌會輸出到螢幕,如果工程比較大,相應的大量日誌也會輸出。那有沒有辦法可以調整輸出的日誌級別的,答案是有的,可參考下面的三種方案:

  1. 編輯mvn執行檔案 ${MAVEN_HOME}/bin/mvn 新增一行配置
MAVEN_OPTS="-Dorg.slf4j.simpleLogger.defaultLogLevel=warn"
  1. maven安裝目錄下:conf/logging/simplelogger.properties 修改輸出日誌級別
org.slf4j.simpleLogger.defaultLogLevel=warn
  1. 在執行mvn命令的時候使用引數 -q,不過這樣只能輸出error資訊
mvn clean package -DskipTests -q

3. 檔案過濾打包配置技巧

我們有時希望maven打包時只把某些資原始檔打入jar包,而並不是所有的檔案,此時我們可以在POM檔案做如下配置:

<!--配置Maven 對resource檔案 過濾 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 打包時,只載入aa.properties和bb.xml -->
                <includes>
                    <include>**/aa.properties</include>
                    <include>**/bb.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>

4. 離線開發的配置技巧

有時處於安全考慮我們需要在斷網的環境下進行開發,例如生產環境。此時不能連線外網依賴如何載入呢?如何進行開發呢?maven提供了離線模式,前提是需要將下載好依賴包上傳到內網環境並安裝maven等相關工具,可參考如下兩種方案:

  1. 在 settings.xml中進行更改 在第一個標記中新增
    maven_local
<localRepository>~/.m2/repository</localRepository>
<offline>true</offline>

使用mvn clean package -DskipTests=true進行打包

  1. 在pom檔案中指定本地倉庫

maven_local_pom

	<repositories>
    <repository>
      <id>local</id>
      <name>local Repository</name>
      <url>file://${project.basedir}/.m2/repository</url>
    </repository>
  </repositories>

使用mvn -o clean install -DskipTests=true進行打包

三、總結

以上就是今天大獅兄和大家分享的關於maven配置相關的內容,包含多辦公環境切換的配置、構建日誌輸出的配置、打包檔案過濾的配置、離線開發的配置。文章觀點或者結論亦或其他如有錯誤,歡迎大家評論或者私信進行斧正。同時如果此篇文章對大家有所幫助,也歡迎大家點贊、收藏、關注。

相關文章