Maven做爲包管理咱們使用了多少標籤

這是我參與更文挑戰的第12天,活動詳情查看: 更文挑戰html

[TOC]linux

maven是一個項目構建和管理的工具,提供了幫助管理 構建、文檔、報告、依賴、scms、發佈、分發的方法。能夠方便的編譯代碼、進行依賴管理、管理二進制庫等等。 maven的好處在於能夠將項目過程規範化、自動化、高效化以及強大的可擴展性 利用maven自身及其插件還能夠得到代碼檢查報告、單元測試覆蓋率、實現持續集成等等。spring

localRepository

用於指定存儲jar包的路徑,換句話說就是本地倉庫地址,若是不設置默認是${user.home}/.m2/repository 。${user.home}是系統環境變量apache

<localRepository>E:/.m2</localRepository>
複製代碼

interactiveMode

表示是否使用交互模式,默認是true;若是設爲false,那麼當Maven須要用戶進行輸入的時候,它會使用一個默認值。windows

<interactiveMode>true</interactiveMode>
複製代碼

offline

表示Maven是否須要在離線模式下運行。若是構建系統須要在離線模式下運行,則爲true,默認爲false。當因爲網絡設置緣由或者安全因素,構建服務器不能鏈接遠程倉庫的時候,咱們就能夠設置成false,這樣安全安全

<offline>false</offline>
複製代碼

pluginGroups

  • 元素裏包含了一個pluginGroup列表。默認maven中有org.apache.maven.pluginsorg.codehaus.mojo兩個pluginGroup。表示當經過plugin的前綴來解析plugin的時候到哪裏尋找。pluginGroup元素指定的是plugin的groupId
  • 以下使咱們在pom文件中配置的一個插件,咱們配置的座標中並無指定groupId,熟悉maven的都知道咱們引入以來至少須要groupId和artifactId的。可是下面的插件中沒有。這個時候maven就會獲取pluginGroupspluginGroup列表和配置中artifactId進行一一匹配。匹配到下載。這裏若是出現重複也不要緊,咱們使用的時候使用對了就好了。
<plugins>
          <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.7</source>
                  <target>1.7</target>
              </configuration>
          </plugin>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
      </plugins>
複製代碼

proxies

其下面能夠定義一系列的proxy子元素,表示Maven在進行聯網時須要使用到的代理。當設置了多個代理的時候第一個標記active爲true的代理將會被使用服務器

<proxies>
  <!--代理元素包含配置代理時須要的信息-->
  <proxy>
   <!--代理的惟必定義符,用來區分不一樣的代理元素。-->
   <id>myproxy</id>
   <!--該代理是不是激活的那個。true則激活代理。當咱們聲明瞭一組代理,而某個時候只須要激活一個代理的時候,該元素就能夠派上用處。 -->
   <active>true</active>
   <!--代理的協議。 協議://主機名:端口,分隔成離散的元素以方便配置。-->
   <protocol>http</protocol>
   <!--代理的主機名。協議://主機名:端口,分隔成離散的元素以方便配置。  -->
   <host>proxy.somewhere.com</host>
   <!--代理的端口。協議://主機名:端口,分隔成離散的元素以方便配置。 -->
   <port>8080</port>
   <!--代理的用戶名,用戶名和密碼錶示代理服務器認證的登陸名和密碼。 -->
   <username>proxyuser</username>
   <!--代理的密碼,用戶名和密碼錶示代理服務器認證的登陸名和密碼。 -->
   <password>somepassword</password>
   <!--不應被代理的主機名列表。該列表的分隔符由代理服務器指定;例子中使用了豎線分隔符,使用逗號分隔也很常見。-->
   <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
  </proxy>
 </proxies>
複製代碼

servers

  • 配置服務端的一些設置。一些設置如安全證書不該該和pom.xml一塊兒分發。這種類型的信息應該存在於構建服務器上的settings.xml文件中
<servers>
<!--服務器元素包含配置服務器時須要的信息 -->
<server>
 <!--這是server的id(注意不是用戶登錄的id),該id與distributionManagement中repository元素的id相匹配。-->
 <id>server001</id>
 <!--鑑權用戶名。鑑權用戶名和鑑權密碼錶示服務器認證所須要的登陸名和密碼。 -->
 <username>my_login</username>
 <!--鑑權密碼 。鑑權用戶名和鑑權密碼錶示服務器認證所須要的登陸名和密碼。密碼加密功能已被添加到2.1.0 +。詳情請訪問密碼加密頁面-->
 <password>my_password</password>
 <!--鑑權時使用的私鑰位置。和前兩個元素相似,私鑰位置和私鑰密碼指定了一個私鑰的路徑(默認是${user.home}/.ssh/id_dsa)以及若是須要的話,一個密語。未來passphrase和password元素可能會被提取到外部,但目前它們必須在settings.xml文件以純文本的形式聲明。 -->
 <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
 <!--鑑權時使用的私鑰密碼。-->
 <passphrase>some_passphrase</passphrase>
 <!--文件被建立時的權限。若是在部署的時候會建立一個倉庫文件或者目錄,這時候就可使用權限(permission)。這兩個元素合法的值是一個三位數字,其對應了unix文件系統的權限,如664,或者775。 -->
 <filePermissions>664</filePermissions>
 <!--目錄被建立時的權限。 -->
 <directoryPermissions>775</directoryPermissions>
</server>
</servers>
複製代碼

使用方法

  • 咱們在項目的pom中配置了發佈屬性 distributionManagement是部署到遠程的配置標籤。這個標籤將在maven的pom章節講
<distributionManagement>
  <repository>
      <id>release-repository</id>
      <name>Release Repository</name>
      <url>http://www.myrepository.com/repositories/releases</url>
  </repository>
  <snapshotRepository>
      <id>snapshot-repository</id>
      <name>Snapshot Repository</name>
      <url>http://www.myrepository.com/repositories/snapshots</url>
  </snapshotRepository>
</distributionManagement>
複製代碼
  • 上面配置了SNAPSHOT包的上傳路徑和RELEASE包的上傳遠程地址,可是咱們的這個遠程地址有權限,最基本的就是須要帳號和密碼。這個時候咱們不能暴露在項目中,咱們就能夠在maven的setting中設置了,就是經過servers標籤實現,markdown

    <servers>
        <server>
            <id>snapshot-repository</id>
            <username>snapshot</username>
            <password>123456</password>
        </server>
        <server>
            <id>release-repository</id>
            <username>release</username>
            <password>123456</password>
        </server>
    </servers>
    複製代碼
  • 注意一點兩邊的id必須匹配才能夠。 maven對密碼進行加密處理網絡

mirrors

  • 爲倉庫列表配置的下載鏡像列表。高級設置請參閱鏡像設置頁面,用於定義一系列的遠程倉庫的鏡像。咱們能夠在pom中定義一個下載工件的時候所使用的遠程倉庫。可是有時候這個遠程倉庫會比較忙,因此這個時候人們就想着給它建立鏡像以緩解遠程倉庫的壓力,也就是說會把對遠程倉庫的請求轉換到對其鏡像地址的請求。每一個遠程倉庫都會有一個id,這樣咱們就能夠建立本身的mirror來關聯到該倉庫,那麼之後須要從遠程倉庫下載工件的時候Maven就能夠從咱們定義好的mirror站點來下載,這能夠很好的緩解咱們遠程倉庫的壓力。在咱們定義的mirror中每一個遠程倉庫都只能有一個mirror與它關聯,也就是說你不能同時配置多個mirror的mirrorOf指向同一個repositoryId。
    • id:是用來區別mirror的,全部的mirror不能有相同的idssh

    • mirrorOf:用來表示該mirror是關聯的哪個倉庫,其值爲其關聯倉庫的id。當要同時關聯多個倉庫時,這多個倉庫之間能夠用逗號隔開;當要關聯全部的倉庫時,可使用「」表示;當要關聯除某一個倉庫之外的其餘全部倉庫時,能夠表示爲「,!repositoryId」;當要關聯不是localhost或用file請求的倉庫時,能夠表示爲「external:*」。

    • url:表示該鏡像的url。當Maven在創建系統的時候就會使用這個url來鏈接到咱們的遠程倉庫。

<mirrors>
  <!--給定倉庫的下載鏡像。 -->
  <mirror>
   <!--該鏡像的惟一標識符。id用來區分不一樣的mirror元素。 -->
   <id>planetmirror.com</id>
   <!--鏡像名稱 -->
   <name>PlanetMirror Australia</name>
   <!--該鏡像的URL。構建系統會優先考慮使用該URL,而非使用默認的服務器URL。 -->
   <url>http://downloads.planetmirror.com/pub/maven2</url>
   <!--被鏡像的服務器的id。例如,若是咱們要設置了一個Maven中央倉庫(http://repo.maven.apache.org/maven2/)的鏡像,就須要將該元素設置成central。這必須和中央倉庫的id central徹底一致。-->
   <mirrorOf>central</mirrorOf>
  </mirror>
 </mirrors>
複製代碼

profiles

  • 用於指定一系列的profile。profile元素由activation、repositories、pluginRepositories和properties四個元素組成。當一個profile在settings.xml中是處於活動狀態而且在pom.xml中定義了一個相同id的profile時,settings.xml中的profile會覆蓋pom.xml中的profile。

使用場景

  • profile可讓咱們定義一系列的配置信息,而後指定其激活條件。這樣咱們就能夠定義多個profile,而後每一個profile對應不一樣的激活條件和配置信息,從而達到不一樣環境使用不一樣配置信息的效果。好比說,咱們能夠經過profile定義在jdk1.5以上使用一套配置信息,在jdk1.5如下使用另一套配置信息;或者有時候咱們能夠經過操做系統的不一樣來使用不一樣的配置信息,好比windows下是一套信息,linux下又是另一套信息,等等。具體的激活條件有哪些我在後文會講到

出現位置

  • 針對於特定項目的profile配置咱們能夠定義在該項目的pom.xml中。

  • 針對於特定用戶的profile配置,咱們能夠在用戶的settings.xml文件中定義profile。該文件在用戶家目錄下的「.m2」目錄下。

  • 全局的profile配置。全局的profile是定義在Maven安裝目錄下的「conf/settings.xml」文件中的

激活方式

  • 激活方式纔是profiles運用的幾種表現,咱們經過這些激活方式靈活實現部署到不一樣的環境中,對於不一樣的知足條件咱們提供不一樣的profile,profile咱們有不一樣的配置,這樣就實現了部署的靈活性
    • 參數激活
    以下咱們配置了兩個profile(zxh1,zxh2),兩個profile除了標識id還配置了參數properties.分別表示當屬性zxhtom值爲single、double該激活的profile。
```
  <profiles>  
       <profile>  
              <id>zxh1</id>  
              <properties>  
                     <zxhtom>single</zxhtom>  
              </properties>  
       </profile>  
       <profile>  
              <id>zxh2</id>  
              <properties>  
                     <zxhtom>double</zxhtom>  
              </properties>  
       </profile>  
  <profiles>
```

  +  環境激活
  
  在部署是符合這些環境要求的電腦則會獲取到該profile的配置。這樣咱們windows上配置和Linux上就不一樣了。

  ```
  <activation>
    <os>
     <!--激活profile的操做系統的名字 -->
     <name>Windows 7</name>
     <!--激活profile的操做系統所屬家族(如 'windows')  -->
     <family>Windows</family>
     <!--激活profile的操做系統體系結構  -->
     <arch>x64</arch>
     <!--激活profile的操做系統版本-->
     <version>x.x.x..</version>
    </os>
  </activation>
  ```

  +  默認激活
      *  activeByDefault激活

      下面的配置在咱們部署是沒有指定profile時,zxh1這個profile就會成爲默認的profile,若是咱們指定了那麼zxh1就不會被啓用。這裏要注意這裏是不啓用。和後面的activeProfiles激活不一樣。

      ```
      <profiles>  
            <profile>  
                 <id>zxh1</id>  
                 <properties>  
                        <zxhtom>single</zxhtom>  
                 </properties>  
                 <activation>  
                        <activeByDefault>true</activeByDefault>  
                 </activation>  
            </profile>  
              
            <profile>  
                 <id>zxh2</id>  
                 <properties>  
                        <zxhtom>double</zxhtom>  
                 </properties>  
            </profile>  
      </profiles>
      ```

      *  activeProfiles激活
      
      以下圖中咱們定義zxh1爲激活狀態,另外咱們若是在經過參數或者其餘條件激活了zxh2,這裏zxh1和zxh2都是出於激活的,並不像activeByDefault激活那樣直接中止了。而是二者的覆蓋值合併。

      ```
      <profiles>  
       <profile>  
              <id>zxh1</id>  
              <properties>  
                     <zxhtom>single</zxhtom>  
              </properties>  
       </profile>  
       <profile>  
              <id>zxh2</id>  
              <properties>  
                     <zxhtom>double</zxhtom>  
              </properties>  
       </profile>  
      <profiles>
      <activeProfiles>  
         <activeProfile>zxh1</activeProfile>  
      </activeProfiles>  
      ```
    檔以下在activeProfiles中配置了多個profile是,maven選擇的是後者覆蓋合併前者的方式,也就是將zxh1和zxh2合併,相同值去後者的值。
      ```
      <profiles>  
       <profile>  
              <id>zxh1</id>  
              <properties>  
                     <zxhtom>single</zxhtom>  
              </properties>  
       </profile>  
       <profile>  
              <id>zxh2</id>  
              <properties>  
                     <zxhtom>double</zxhtom>  
              </properties>  
       </profile>  
      <profiles>
      <activeProfiles>  
         <activeProfile>zxh1</activeProfile>  
         <activeProfile>zxh2</activeProfile>  
      </activeProfiles>  
      ```

  +  文件激活

    ```
    <activation>
         <file>
         <!--若是指定的文件存在,則激活profile。 -->
         <exists>${basedir}/file2.properties</exists>
         <!--若是指定的文件不存在,則激活profile。-->
         <missing>${basedir}/file1.properties</missing>
         </file>
    </activation>
    ```
複製代碼
相關文章
相關標籤/搜索