欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Maven簡(jiǎn)介(五)

6       Mavenpom.xml介紹

6.1     簡(jiǎn)介

       pom.xml文件是Maven進(jìn)行工作的主要配置文件。在這個(gè)文件中我們可以配置Maven項目的groupId、artifactIdversionMaven項目必須的元素;可以配置Maven項目需要使用的遠程倉庫;可以定義Maven項目打包的形式;可以定義Maven項目的資源依賴(lài)關(guān)系等等。對于一個(gè)最簡(jiǎn)單的pom.xml的定義必須包含modelVersion、groupId、artifactIdversion這四個(gè)元素,當然這其中的元素也是可以從它的父項目中繼承的。在Maven中,使用groupId、artifactIdversion組成groupdId:artifactId:version的形式來(lái)唯一確定一個(gè)項目。

6.2     pom.xml的繼承、聚合與依賴(lài)

       我們知道Maven在建立項目的時(shí)候是基于Maven項目下的pom.xml進(jìn)行的,我們項目依賴(lài)的信息和一些基本信息都是在這個(gè)文件里面定義的。那如果當我們有多個(gè)項目要進(jìn)行,這多個(gè)項目有些配置內容是相同的,有些是要彼此關(guān)聯(lián)的,那如果按照傳統的做法的話(huà)我們就需要在多個(gè)項目中都定義這些重復的內容。這無(wú)疑是非常耗費時(shí)間和不易維護的。好在Maven給我們提供了一個(gè)pom的繼承和聚合的功能。

       對于使用java的人而言,繼承這個(gè)詞大家應該都不陌生。要繼承pom就需要有一個(gè)父pom,在Maven中定義了超級pom.xml,任何沒(méi)有申明自己父pom.xmlpom.xml都將默認繼承自這個(gè)超級pom.xml。

       先來(lái)看一下這個(gè)超級pom.xml的定義:

Xml代碼  
  1. <project>  
  2.   <modelVersion>4.0.0</modelVersion>  
  3.   <name>Maven Default Project</name>  
  4.    
  5.   <repositories>  
  6.     <repository>  
  7.       <id>central</id>  
  8.       <name>Maven Repository Switchboard</name>  
  9.       <layout>default</layout>  
  10.       <url>http://repo1.maven.org/maven2</url>  
  11.       <snapshots>  
  12.         <enabled>false</enabled>  
  13.       </snapshots>  
  14.     </repository>  
  15.   </repositories>  
  16.    
  17.   <pluginRepositories>  
  18.     <pluginRepository>  
  19.       <id>central</id>  
  20.       <name>Maven Plugin Repository</name>  
  21.       <url>http://repo1.maven.org/maven2</url>  
  22.       <layout>default</layout>  
  23.       <snapshots>  
  24.         <enabled>false</enabled>  
  25.       </snapshots>  
  26.       <releases>  
  27.         <updatePolicy>never</updatePolicy>  
  28.       </releases>  
  29.     </pluginRepository>  
  30.   </pluginRepositories>  
  31.    
  32.   <build>  
  33.     <directory>${project.basedir}/target</directory>  
  34.     <outputDirectory>${project.build.directory}/classes</outputDirectory>  
  35.     <finalName>${project.artifactId}-${project.version}</finalName>  
  36.     <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>  
  37.     <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>  
  38.     <!-- TODO: MNG-3731 maven-plugin-tools-api < 2.4.4 expect this to be relative... -->  
  39.     <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>  
  40.     <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>  
  41.     <resources>  
  42.       <resource>  
  43.         <directory>${project.basedir}/src/main/resources</directory>  
  44.       </resource>  
  45.     </resources>  
  46.     <testResources>  
  47.       <testResource>  
  48.         <directory>${project.basedir}/src/test/resources</directory>  
  49.       </testResource>  
  50.     </testResources>  
  51.    <pluginManagement>  
  52.        <plugins>  
  53.          <plugin>  
  54.            <artifactId>maven-antrun-plugin</artifactId>  
  55.            <version>1.3</version>  
  56.          </plugin>        
  57.          <plugin>  
  58.            <artifactId>maven-assembly-plugin</artifactId>  
  59.            <version>2.2-beta-2</version>  
  60.          </plugin>          
  61.          <plugin>  
  62.            <artifactId>maven-clean-plugin</artifactId>  
  63.            <version>2.2</version>  
  64.          </plugin>  
  65.          <plugin>  
  66.            <artifactId>maven-compiler-plugin</artifactId>  
  67.            <version>2.0.2</version>  
  68.          </plugin>  
  69.          <plugin>  
  70.            <artifactId>maven-dependency-plugin</artifactId>  
  71.            <version>2.0</version>  
  72.          </plugin>  
  73.          <plugin>  
  74.            <artifactId>maven-deploy-plugin</artifactId>  
  75.            <version>2.4</version>  
  76.          </plugin>  
  77.          <plugin>  
  78.            <artifactId>maven-ear-plugin</artifactId>  
  79.            <version>2.3.1</version>  
  80.          </plugin>  
  81.          <plugin>  
  82.            <artifactId>maven-ejb-plugin</artifactId>  
  83.            <version>2.1</version>  
  84.          </plugin>  
  85.          <plugin>  
  86.            <artifactId>maven-install-plugin</artifactId>  
  87.            <version>2.2</version>  
  88.          </plugin>  
  89.          <plugin>  
  90.            <artifactId>maven-jar-plugin</artifactId>  
  91.            <version>2.2</version>  
  92.          </plugin>  
  93.          <plugin>  
  94.            <artifactId>maven-javadoc-plugin</artifactId>  
  95.            <version>2.5</version>  
  96.          </plugin>  
  97.          <plugin>  
  98.            <artifactId>maven-plugin-plugin</artifactId>  
  99.            <version>2.4.3</version>  
  100.          </plugin>  
  101.          <plugin>  
  102.            <artifactId>maven-rar-plugin</artifactId>  
  103.            <version>2.2</version>  
  104.          </plugin>         
  105.          <plugin>                 
  106.            <artifactId>maven-release-plugin</artifactId>  
  107.            <version>2.0-beta-8</version>  
  108.          </plugin>  
  109.          <plugin>                  
  110.            <artifactId>maven-resources-plugin</artifactId>  
  111.            <version>2.3</version>  
  112.          </plugin>  
  113.          <plugin>  
  114.            <artifactId>maven-site-plugin</artifactId>  
  115.            <version>2.0-beta-7</version>  
  116.          </plugin>  
  117.          <plugin>  
  118.            <artifactId>maven-source-plugin</artifactId>  
  119.            <version>2.0.4</version>  
  120.          </plugin>          
  121.          <plugin>  
  122.             <artifactId>maven-surefire-plugin</artifactId>  
  123.             <version>2.4.3</version>  
  124.          </plugin>  
  125.          <plugin>  
  126.            <artifactId>maven-war-plugin</artifactId>  
  127.            <version>2.1-alpha-2</version>  
  128.          </plugin>  
  129.        </plugins>  
  130.      </pluginManagement>  
  131.   </build>  
  132.    
  133.   <reporting>  
  134.     <outputDirectory>${project.build.directory}/site</outputDirectory>  
  135.   </reporting>  
  136.   <profiles>  
  137.     <profile>  
  138.       <id>release-profile</id>  
  139.    
  140.       <activation>  
  141.         <property>  
  142.           <name>performRelease</name>  
  143.           <value>true</value>  
  144.         </property>  
  145.       </activation>  
  146.    
  147.       <build>  
  148.         <plugins>  
  149.           <plugin>  
  150.             <inherited>true</inherited>  
  151.             <groupId>org.apache.maven.plugins</groupId>  
  152.             <artifactId>maven-source-plugin</artifactId>  
  153.             <executions>  
  154.               <execution>  
  155.                 <id>attach-sources</id>  
  156.                 <goals>  
  157.                   <goal>jar</goal>  
  158.                 </goals>  
  159.               </execution>  
  160.             </executions>  
  161.           </plugin>  
  162.           <plugin>  
  163.             <inherited>true</inherited>  
  164.             <groupId>org.apache.maven.plugins</groupId>  
  165.             <artifactId>maven-javadoc-plugin</artifactId>  
  166.             <executions>  
  167.               <execution>  
  168.                 <id>attach-javadocs</id>  
  169.                 <goals>  
  170.                   <goal>jar</goal>  
  171.                 </goals>  
  172.               </execution>  
  173.             </executions>  
  174.           </plugin>  
  175.           <plugin>  
  176.             <inherited>true</inherited>  
  177.             <groupId>org.apache.maven.plugins</groupId>  
  178.             <artifactId>maven-deploy-plugin</artifactId>  
  179.             <configuration>  
  180.               <updateReleaseInfo>true</updateReleaseInfo>  
  181.             </configuration>  
  182.           </plugin>  
  183.         </plugins>  
  184.       </build>  
  185.     </profile>  
  186.   </profiles>  
  187.    
  188. </project>  

 

       對于一個(gè)pom.xml來(lái)說(shuō)有幾個(gè)元素是必須定義的,一個(gè)是project根元素,然后就是它里面的modelVersion、groupId、artifactIdversion。由上面的超級pom.xml的內容我們可以看到pom.xml中沒(méi)有groupId、artifactIdversion的定義,所以我們在建立自己的pom.xml的時(shí)候就需要定義這三個(gè)元素。和java里面的繼承類(lèi)似,子pom.xml會(huì )完全繼承父pom.xml中所有的元素,而且對于相同的元素,一般子pom.xml中的會(huì )覆蓋父pom.xml中的元素,但是有幾個(gè)特殊的元素它們會(huì )進(jìn)行合并而不是覆蓋。這些特殊的元素是:

  dependencies

  developers

  contributors

  plugin列表,包括plugin下面的reports

  resources

6.2.1繼承

6.2.1.1被繼承項目與繼承項目是父子目錄關(guān)系

       現在假設我們有一個(gè)項目projectA,它的pom.xml定義如下:

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>com.tiantian.mavenTest</groupId>  
  5.   <artifactId>projectA</artifactId>  
  6.   <packaging>jar</packaging>  
  7.   <version>1.0-SNAPSHOT</version>  
  8. </project>  

 

       然后我們有另一個(gè)項目projectB,而且projectB是跟projectApom.xml文件處于同一個(gè)目錄下,這時(shí)候如果projectB需要繼承自projectA的話(huà)我們可以這樣定義projectBpom.xml文件。

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <parent>  
  4.     <groupId>com.tiantian.mavenTest</groupId>  
  5.     <artifactId>projectA</artifactId>  
  6.     <version>1.0-SNAPSHOT</version>  
  7.   </parent>  
  8.   <modelVersion>4.0.0</modelVersion>  
  9.   <groupId>com.tiantian.mavenTest</groupId>  
  10.   <artifactId>projectB</artifactId>  
  11.   <packaging>jar</packaging>  
  12.   <version>1.0-SNAPSHOT</version>  
  13. </project>  

 

       projectBpom.xml文件的定義我們可以知道,當需要繼承指定的一個(gè)Maven項目時(shí),我們需要在自己的pom.xml中定義一個(gè)parent元素,在這個(gè)元素中指明需要繼承項目的groupId、artifactIdversion。

6.2.1.2被繼承項目與繼承項目的目錄結構不是父子關(guān)系

       當被繼承項目與繼承項目的目錄結構不是父子關(guān)系的時(shí)候,我們再利用上面的配置是不能實(shí)現Maven項目的繼承關(guān)系的,這個(gè)時(shí)候我們就需要在子項目的pom.xml文件定義中的parent元素下再加上一個(gè)relativePath元素的定義,用以描述父項目的pom.xml文件相對于子項目的pom.xml文件的位置。

       假設我們現在還是有上面兩個(gè)項目,projectAprojectB,projectB還是繼承自projectA,但是現在projectB不在projectA的子目錄中,而是與projectA處于同一目錄中。這個(gè)時(shí)候projectAprojectB的目錄結構如下:

       ------projectA

              ------pom.xml

       ------projectB

              ------pom.xml

       這個(gè)時(shí)候我們可以看出projectApom.xml相對于projectBpom.xml的位置是“../projectA/pom.xml”,所以這個(gè)時(shí)候projectBpom.xml的定義應該如下所示:

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <parent>  
  4.     <groupId>com.tiantian.mavenTest</groupId>  
  5.     <artifactId>projectA</artifactId>  
  6.     <version>1.0-SNAPSHOT</version>  
  7.        <relativePath>../projectA/pom.xml</relativePath>  
  8.   </parent>  
  9.   <modelVersion>4.0.0</modelVersion>  
  10.   <groupId>com.tiantian.mavenTest</groupId>  
  11.   <artifactId>projectB</artifactId>  
  12.   <packaging>jar</packaging>  
  13.   <version>1.0-SNAPSHOT</version>  
  14. </project>  

 

6.2.2聚合

       對于聚合這個(gè)概念搞java的人應該都不會(huì )陌生。先來(lái)說(shuō)說(shuō)我對聚合和被聚合的理解,比如說(shuō)如果projectA聚合到projectB,那么我們就可以說(shuō)projectAprojectB的子模塊, projectB是被聚合項目,也可以類(lèi)似于繼承那樣稱(chēng)為父項目。對于聚合而言,這個(gè)主體應該是被聚合的項目。所以,我們需要在被聚合的項目中定義它的子模塊,而不是像繼承那樣在子項目中定義父項目。具體做法是:

  修改被聚合項目的pom.xml中的packaging元素的值為pom

  在被聚合項目的pom.xml中的modules元素下指定它的子模塊項目

對于聚合而言,當我們在被聚合的項目上使用Maven命令時(shí),實(shí)際上這些命令都會(huì )在它的子模塊項目上使用。這就是Maven中聚合的一個(gè)非常重要的作用。假設這樣一種情況,你同時(shí)需要打包或者編譯projectA、projectB、projectCprojectD,按照正常的邏輯我們一個(gè)一個(gè)項目去使用mvn compilemvn package進(jìn)行編譯和打包,對于使用Maven而言,你還是這樣使用的話(huà)是非常麻煩的。因為Maven給我們提供了聚合的功能。我們只需要再定義一個(gè)超級項目,然后在超級項目的pom.xml中定義這個(gè)幾個(gè)項目都是聚合到這個(gè)超級項目的。之后我們只需要對這個(gè)超級項目進(jìn)行mvn compile,它就會(huì )把那些子模塊項目都進(jìn)行編譯。

6.2.2.1被聚合項目和子模塊項目在目錄結構上是父子關(guān)系

還拿上面定義的projectAprojectB來(lái)舉例子,現在假設我們需要把projectB聚合到projectA中。projectAprojectB的目錄結構如下所示:

------projectA

       ------projectB

              -----pom.xml

       ------pom.xml

這個(gè)時(shí)候projectApom.xml應該這樣定義:

 

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>com.tiantian.mavenTest</groupId>  
  5.   <artifactId>projectA</artifactId>  
  6.   <version>1.0-SNAPSHOT</version>  
  7.   <packaging>pom</packaging>  
  8.   <modules>  
  9.        <module>projectB</module>  
  10.   </modules>  
  11. </project>  
 

 

由上面的定義我們可以看到被聚合的項目的packaging類(lèi)型應該為pom,而且一個(gè)項目可以有多個(gè)子模塊項目。對于聚合這種情況,我們使用子模塊項目的artifactId來(lái)作為module的值,表示子模塊項目相對于被聚合項目的地址,在上面的示例中就表示子模塊projectB是處在被聚合項目的子目錄下,即與被聚合項目的pom.xml處于同一目錄。這里使用的module值是子模塊projectB對應的目錄名projectB,而不是子模塊對應的artifactId。這個(gè)時(shí)候當我們對projectA進(jìn)行mvn package命令時(shí),實(shí)際上Maven也會(huì )對projectB進(jìn)行打包。

6.2.2.2被聚合項目與子模塊項目在目錄結構上不是父子關(guān)系

那么當被聚合項目與子模塊項目在目錄結構上不是父子關(guān)系的時(shí)候,我們應該怎么來(lái)進(jìn)行聚合呢?還是像繼承那樣使用relativePath元素嗎?答案是非也,具體做法是在module元素中指定以相對路徑的方式指定子模塊。我們來(lái)看下面一個(gè)例子。

繼續使用上面的projectAprojectB,還是需要把projectB聚合到projectA,但是projectAprojectB的目錄結構不再是父子關(guān)系,而是如下所示的這種關(guān)系:

------projectA

       ------pom.xml

------projectB

       ------pom.xml

這個(gè)時(shí)候projectApom.xml文件就應該這樣定義:

 

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.    
  5.   <groupId>com.tiantian.mavenTest</groupId>  
  6.   <artifactId>projectA</artifactId>  
  7.   <version>1.0-SNAPSHOT</version>  
  8.   <packaging>pom</packaging>  
  9.   <modules>  
  10.        <module>../projectB</module>  
  11.   </modules>  
  12. </project>  
 

 

注意看module的值是“../projectB”,我們知道“..”是代表當前目錄的上層目錄,所以它表示子模塊projectB是被聚合項目projectApom.xml文件所在目錄(即projectA)的上層目錄下面的子目錄,即與projectA處于同一目錄層次。注意,這里的projectB對應的是projectB這個(gè)項目的目錄名稱(chēng),而不是它的artifactId。

6.2.2.3聚合與繼承同時(shí)進(jìn)行

       假設有這樣一種情況,有兩個(gè)項目,projectAprojectB,現在我們需要projectB繼承projectA,同時(shí)需要把projectB聚合到projectA。然后projectAprojectB的目錄結構如下:

       ------projectA

              ------pom.xml

       ------projectB

              ------pom.xml

       那么這個(gè)時(shí)候按照上面說(shuō)的那樣,projectApom.xml中需要定義它的packagingpom,需要定義它的modules,所以projectApom.xml應該這樣定義:

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>com.tiantian.mavenTest</groupId>  
  5.   <artifactId>projectA</artifactId>  
  6.   <version>1.0-SNAPSHOT</version>  
  7.   <packaging>pom</packaging>  
  8.   <modules>  
  9.        <module>../projectB</module>  
  10.   </modules>  
  11. </project>  

 

       projectB是繼承自projectA的,所以我們需要在projectBpom.xml文件中新增一個(gè)parent元素,用以定義它繼承的項目信息。所以projectBpom.xml文件的內容應該這樣定義:

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <parent>  
  5.        <groupId>com.tiantian.mavenTest</groupId>  
  6.        <artifactId>projectA</artifactId>  
  7.        <version>1.0-SNAPSHOT</version>  
  8.        <relativePath>../projectA/pom.xml</relativePath>  
  9.   </parent>  
  10.   <groupId>com.tiantian.mavenTest</groupId>  
  11.   <artifactId>projectB</artifactId>  
  12.   <version>1.0-SNAPSHOT</version>  
  13.   <packaging>jar</packaging>  
  14. </project>  

 

6.2.3依賴(lài)Dependency

       項目之間的依賴(lài)是通過(guò)pom.xml文件里面的dependencies元素下面的dependency元素進(jìn)行的。一個(gè)dependency元素定義一個(gè)依賴(lài)關(guān)系。在dependency元素中我們主要通過(guò)依賴(lài)項目的groupId、artifactIdversion來(lái)定義所依賴(lài)的項目。

       先來(lái)看一個(gè)簡(jiǎn)單的項目依賴(lài)的示例吧,假設我現在有一個(gè)項目projectA,然后它里面有對junit的依賴(lài),那么它的pom.xml就類(lèi)似以下這個(gè)樣子:

Xml代碼  
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>com.tiantian.mavenTest</groupId>  
  5.   <artifactId>projectB</artifactId>  
  6.   <version>1.0-SNAPSHOT</version>  
  7.   <packaging>jar</packaging>  
  8.    
  9.   <dependencies>  
  10.     <dependency>  
  11.       <groupId>junit</groupId>  
  12.       <artifactId>junit</artifactId>  
  13.       <version>3.8.1</version>  
  14.       <scope>test</scope>  
  15.               <optional>true</optional>  
  16.     </dependency>  
  17.   </dependencies>  
  18. </project>  

 

       dependency元素中除了可以指定依賴(lài)項目的groupId、artifactIdversion之外,還可以指定以下元素:

  type:對應于依賴(lài)項目的packaging類(lèi)型,默認是jar

  scope:表示依賴(lài)項目的一個(gè)作用范圍。scope的主要取值范圍如下(還有一個(gè)是在Maven2.0.9以后版本才支持的import,關(guān)于import作用域將在后文《Dependency介紹》中做介紹):

n  compile:這是它的默認值,這種類(lèi)型很容易讓人產(chǎn)生誤解,以為只有在編譯的時(shí)候才是需要的,其實(shí)這種類(lèi)型表示所有的情況都是有用的,包括編譯和運行時(shí)。而且這種類(lèi)型的依賴(lài)性是可以傳遞的。

n  provided:這個(gè)跟compile很類(lèi)似,但是它表示你期望這個(gè)依賴(lài)項目在運行時(shí)由JDK或者容器來(lái)提供。這種類(lèi)型表示該依賴(lài)只有在測試和編譯的情況下才有效,在運行時(shí)將由JDK或者容器提供。這種類(lèi)型的依賴(lài)性是不可傳遞的。

n  runtime:這種類(lèi)型表示該依賴(lài)在編譯的時(shí)候不是必須的,只有在運行的時(shí)候才是必須的。

n  test:這表示這種依賴(lài)只有測試的時(shí)候才需要,正常情況下是不需要的。

n  system:這種類(lèi)型跟provided類(lèi)似,唯一不同的就是這種類(lèi)型的依賴(lài)我們要自己提供jar包,這需要與另一個(gè)元素systemPath來(lái)結合使用。systemPath將指向我們系統上的jar包的路徑,而且必須是給定的絕對路徑。

  systemPath:上面已經(jīng)說(shuō)過(guò)了這個(gè)元素是在scope的值為system的時(shí)候用于指定依賴(lài)的jar包在系統上的位置的,而且是絕對路徑。該元素必須在依賴(lài)的 jar包的scopesystem時(shí)才能使用,否則Maven將報錯。

  optional:當該項目本身作為其他項目的一個(gè)依賴(lài)時(shí)標記該依賴(lài)為可選項。假設現在projectA有一個(gè)依賴(lài)性projectB,我們把projectB這個(gè)依賴(lài)項設為optional,這表示projectBprojectA的運行時(shí)不一定會(huì )用到。這個(gè)時(shí)候如果我們有另一個(gè)項目projectC,它依賴(lài)于projectA,那么這個(gè)時(shí)候因為projectB對于projectA是可選的,所以Maven在建立projectC的時(shí)候就不會(huì )安裝projectB,這個(gè)時(shí)候如果projectC確實(shí)需要使用到projectB,那么它就可以定義自己對projectB的依賴(lài)。當一個(gè)依賴(lài)是可選的時(shí)候,我們把optional元素的值設為true,否則就不設置optional元素。

  exclusions:考慮這樣一種情況,我們的projectA依賴(lài)于projectB,然后projectB又依賴(lài)于projectC,但是在projectA里面我們不需要projectB依賴(lài)的projectC,那么這個(gè)時(shí)候我們就可以在依賴(lài)projectB的時(shí)候使用exclusions元素下面的exclusion排除projectC。這個(gè)時(shí)候我們可以這樣定義projectAprojectB的依賴(lài):

Xml代碼  
  1. <dependencies>  
  2.      <dependency>  
  3.             <groupId>com.tiantian.mavenTest</groupId>  
  4.             <artifactId>projectB</artifactId>  
  5.             <version>1.0-SNAPSHOT</version>  
  6.             <exclusions>  
  7.                    <exclusion>  
  8.                           <groupId>com.tiantian.mavenTest</groupId>  
  9.                           <artifactId>projectC</artifactId>  
  10.                    </exclusion>  
  11.             </exclusions>  
  12.      </dependency>  
  13. </dependencies>  

 

 

6.3     屬性

pom.xml文件中我們可以使用${propertyName}的形式引用屬性。這個(gè)propertyName有以下幾種形式:

  env.propertyName:這種形式表示引用的是環(huán)境變量,比如我們需要引用當前系統的環(huán)境變量PATH的時(shí)候,就可以使用${env.PATH}。

  project.propertyName:這種形式表示引用的是當前這個(gè)pom.xmlproject根元素下面的子元素的值。比如我們需要引用當前project下面的version的時(shí)候,就可以使用${project.version}。

  settings.propertyName:這種形式引用的是Maven本地配置文件settings.xml或本地Maven安裝目錄下的settings.xml文件根元素settings下的元素。比如我們需要引用settings下的本地倉庫localRepository元素的值時(shí),我們可以用${settings.localRepository}

  java的系統屬性,所有在java中使用java.lang.System.getProperties()能夠獲取到的屬性都可以在pom.xml中引用,比如${java.home}。

  pom.xmlproperties元素下面的子元素作為屬性。假如在pom.xml中有如下一段代碼<properties><hello.world>helloWorld</hello.world></properties>,那么我們就可以使用${hello.world}引用到對應的helloWorld。

 

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
maven中的dependencies和dependencyManagement的區別
maven的部署、遇到的問(wèn)題和心得體會(huì )
[maven2]maven2下pom.xml的json-lib的配置
pom.xml
Myeclipse搭建Maven開(kāi)發(fā)環(huán)境
我的Maven2之旅:十一.打包一個(gè)web工程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久