1. 程式人生 > >Maven學習筆記-1

Maven學習筆記-1

1.優勢 

  •      約定優於配置
  • 簡單
  • 測試支援
  • 構建簡單
  • 外掛豐富

下載

  • http://maven.apache.org/index.html

maven 根配置

     apache-maven-3.5.4-bin\apache-maven-3.5.4\lib\maven-model-builder-3.5.4.jar  

     解壓jar包

    org\apache\maven\model\pom-4.0.0.xml

Maven基礎配置

  •   windows : 在path下面配置maven解壓路徑 
  • Linux  .bash_profile 配置

Maven 最主要的配置檔案

    settings.xml

     載入順序  ~/.m2/setting.xml  > conf/setting.xml 

Setting.xml 標籤說明

    localRepository 

          jar倉庫存放地址

    interactiveMode       

 <!--Maven是否需要和使用者互動以獲得輸入。如果Maven需要和使用者互動以獲得輸入,則設定成true,反之則應為false。預設為true。-->
 <interactiveMode>true</interactiveMode>

  offline

  <!-- offline
   | Determines whether maven should attempt to connect to the network when executing a build.
   | This will have an effect on artifact downloads, artifact deployment, and others.
   |
   | Default: false
  <offline>false</offline>
  
-->
 <!--表示Maven是否需要在離線模式下執行。如果構建系統需要在離線模式下執行,則為true,預設為false。當由於網路設定原因或者安全因素,構建伺服器不能連線遠端倉庫的時候,該配置就十分有用。 -->

    pluginGroups

   <!--當外掛的組織Id(groupId)沒有顯式提供時,供搜尋外掛組織Id(groupId)的列表。該元素包含一個pluginGroup元素列表,每個子元素包含了一個組織Id(groupId)。當我們使用某個外掛,
並且沒有在命令列為其提供組織Id(groupId)的時候,Maven就會使用該列表。預設情況下該列表包含了org.apache.maven.plugins和org.codehaus.mojo -->
<!-- pluginGroups | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e. | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list. |--> <pluginGroups> <!-- pluginGroup | Specifies a further group identifier to use for plugin lookup. <pluginGroup>com.your.plugins</pluginGroup> --> </pluginGroups>

更多的參考 https://blog.csdn.net/u013782203/article/details/51898885

jdk1.8 配置

 <profiles>

   <profile>
      <id>jdk-1.8</id>

      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>
      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compiler>1.8</maven.compiler.compiler>
      </properties>
    </profile>
  </profiles>

 

  pom.xml  

     

<groupId>com.gupao</groupId>   組織
    <artifactId>maven-project</artifactId>  專案名稱
    <version>1.0-SNAPSHOT</version>  版本號
<packaging>jar</packaging> 打包方式 預設 jar 支援 jar war pom
dependencyManagement   jar包管理器 只能出現在父類pom 可以幫助統一專案版本號 不會下載jar  當子專案需要的時候 下載jar

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.2.RELEASE</version>
<scope>compile</scope> 五種 compile test provided runtime system
<type>jar</type>
</dependency>
type:相應的依賴產品包形式,如jar,war
scope:用於限制相應的依賴範圍,包括以下的幾種變數:
compile :預設範圍,用於編譯
provided:類似於編譯,但支援你期待jdk或者容器提供,類似於classpath
runtime:在執行時,需要使用
test:用於test任務時使用
system:需要外在提供相應得元素。通過systemPath來取得
systemPath: 僅用於範圍為system。提供相應的路徑
optional: 標註可選,當專案自身也是依賴時。用於連續依賴時使用
 
 

 

  依賴傳遞  

 

compile

test

provided

runtime

compile

compile

-

-

runtime

test

test

-

-

test

provided

provided

-

provided

provided

runtime

runtime

-

-

runtime

     依賴仲裁

  • 最短路徑
  • 載入先後選擇   如果先載入 就使用 後面的不會覆蓋
  • 排除包 

         

        <exclusions>
            <exclusion>
                <artifactId>commons-beanutils</artifactId>
                <groupId>commons-beanutils</groupId>
            </exclusion>
        </exclusions>

      生命週期