溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

maven的基本使用是怎樣的

發(fā)布時間:2021-11-10 18:17:51 來源:億速云 閱讀:151 作者:柒染 欄目:大數(shù)據(jù)

maven的基本使用是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

什么是maven?

Apache Maven 是一套軟件工程管理和整合工具。 它是基于工程對象模型( Project Object Model ,POM)的概念,通過一個中央信息管理模塊,Maven 能夠管理項目的構(gòu)建、報告和文檔。說白了maven項目就是通過一個pom.xml實現(xiàn)對工程的管理,項目的測試、打包、部署等一應(yīng)俱全的功能,用好了maven插件,簡直事半功倍!Maven 是基于 Java 的工具,所以要做的第一件事情就是安裝 JDK。

maven 特點:

Maven 能夠幫助開發(fā)者完成以下工作:

  • 構(gòu)建

  • 文檔生成

  • 報告

  • 依賴

  • SCMs

  • 發(fā)布

  • 分發(fā)

  • 郵件列表

總的來說,Maven 簡化了工程的構(gòu)建過程,并對其標準化。它無縫銜接了編譯、發(fā)布、文檔生成、團隊合作和其他任務(wù)。Maven 提高了重用性,負責(zé)了大部分構(gòu)建相關(guān)的任務(wù)。

開發(fā)者不需要再關(guān)心每一個配置細節(jié)。Maven 為工程提供了合理的默認行為。當(dāng)創(chuàng)建 Maven 工程時,Maven 會創(chuàng)建默認的工程結(jié)構(gòu)。開發(fā)者只需要合理的放置文件,而在 pom.xml 中不再需要定義任何配置。

Maven 使用約定而不是配置,意味著開發(fā)者不需要再自己創(chuàng)建構(gòu)建過程。maven內(nèi)置變量如下:

${basedir}表示項目根目錄,即包含pom.xml文件的目錄;

${version}表示項目版本;

${project.basedir}同${basedir};

${project.baseUri}表示項目文件地址;

${maven.build.timestamp}表示項目構(gòu)件開始時間;

${maven.build.timestamp.format}表示屬性${maven.build.timestamp}的展示格式,默認值為yyyyMMdd-HHmm,可自定義其格式,其類型可參考java.text.SimpleDateFormat。
 ${project.build.directory}表示主源碼路徑;

${project.build.sourceEncoding}表示主源碼的編碼格式;

${project.build.sourceDirectory}表示主源碼路徑;

${project.build.finalName}表示輸出文件名稱;

 ${project.version}表示項目版本,與${version}相同;
 ${project.xxx} 當(dāng)前pom文件的任意節(jié)點的內(nèi)容
 ${env.xxx} 獲取系統(tǒng)環(huán)境變量。
 ${settings.xxx} 指代了settings.xml中對應(yīng)元素的值。

一個工程僅有一個pom文件,那么如何唯一標記當(dāng)前 工程呢?

  • 所有的 POM 文件需要 project 元素和三個必須的字段:groupId, artifactId,version。

  • 在倉庫中的工程標識為 groupId:artifactId:version

  • POM.xml 的根元素是 project,它有三個主要的子節(jié)點:

<groupId>com.companyname.project-group</groupId>
   <artifactId>project</artifactId>
   <version>1.0</version>
groupId:公司域名倒寫

artifactId: 當(dāng)前項目名稱

version: 版本號

當(dāng)執(zhí)行一個任務(wù)或者目標時,Maven 會查找當(dāng)前目錄下的 POM,從其中讀取所需要的配置信息,然后執(zhí)行目標。能夠在 POM 中設(shè)置的一些配置如下:

  • project dependencies

  • plugins

  • goals

  • build profiles

  • project version

  • developers

  • mailing list

更加詳細的內(nèi)容可以 到 pom.xml 所在的目錄下執(zhí)行以下 mvn 命令  mvn help:effective-pom ,查看完整的內(nèi)容。

maven生命周期

maven的基本使用是怎樣的

maven對構(gòu)建(build)的過程進行了抽象和定義,這個過程被稱為構(gòu)建的生命周期(lifecycle)。生命周期(lifecycle)由多個階段(phase)組成,每個階段(phase)會掛接一到多個goal。goal是maven里定義任務(wù)的最小單元,goal分為兩類,一類是綁定phase的,就是執(zhí)行到某個phase,那么這個goal就會觸發(fā),另外一類不綁定,就是單獨任務(wù),這就相當(dāng)于ant里的target。

以clean生命周期為例,當(dāng)我們執(zhí)行 mvn post-clean 命令時,Maven 調(diào)用 clean 生命周期,它包含以下階段:

  • pre-clean:執(zhí)行一些需要在clean之前完成的工作

  • clean:移除所有上一次構(gòu)建生成的文件

  • post-clean:執(zhí)行一些需要在clean之后立刻完成的工作

mvn clean 中的 clean 就是上面的 clean,在一個生命周期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,如果執(zhí)行 mvn clean 將運行以下兩個生命周期階段:

pre-clean, clean

如果我們運行 mvn post-clean ,則運行以下三個生命周期階段:

pre-clean, clean, post-clean

Maven 構(gòu)建配置文件

使用構(gòu)建配置文件,你可以為不同的環(huán)境,比如說生產(chǎn)環(huán)境(Production)和開發(fā)(Development)環(huán)境,定制構(gòu)建方式。

1. pom文件設(shè)置

配置文件在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通過各種方式觸發(fā)。配置文件在構(gòu)建時修改 POM,并且用來給參數(shù)設(shè)定不同的目標環(huán)境(比如說,開發(fā)(Development)、測試(Testing)和生產(chǎn)環(huán)境(Production)中數(shù)據(jù)庫服務(wù)器的地址)。

maven的基本使用是怎樣的

場景:開發(fā)環(huán)境下和生產(chǎn)環(huán)境下的配置文件肯定不一樣,如何通過profile來控制呢?

假設(shè) 在src/main/resources文件夾下有三個用于測試文件:

maven的基本使用是怎樣的

那么在pom.xml文件下做如下配置:

   <profile>
          <id>normal</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.properties</echo>
                             <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
      <profile>
          <id>prod</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.prod.properties</echo>
                             <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
   </profiles>

使用 pom.xml 來定義不同的 profile,并使用 maven 命令可以激活不同的 profile。

mvn test -Pnormal

將會激活id為normal的環(huán)境

2. 通過Maven設(shè)置激活配置文件

打開 %USER_HOME%/.m2 目錄下的 settings.xml 文件,其中 %USER_HOME% 代表用戶主目錄。如果 setting.xml 文件不存在就直接拷貝 %M2_HOME%/conf/settings.xml 到 .m2 目錄,其中 %M2_HOME% 代表 Maven 的安裝目錄。

配置 setting.xml 文件,增加 <activeProfiles>屬性:

<settings xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
   ...
   <activeProfiles>
      <activeProfile>test</activeProfile>
   </activeProfiles>
</settings>

執(zhí)行命令:

mvn test

此時不需要使用 -Ptest 來輸入?yún)?shù)了,上面的 setting.xml 文件的 <activeprofile> 已經(jīng)指定了 test 參數(shù)代替了。

除此之外,還可以通過環(huán)境變量激活。

通常,可以在setting文件里設(shè)置如下的倉庫源,可以快速下載相應(yīng)的jar包

<mirror>      <id>alimaven</id>      <name>aliyun maven</name>      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>      <mirrorOf>central</mirrorOf>        </mirror>

看完上述內(nèi)容,你們掌握maven的基本使用是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI