maven的常用操作與常用命令與pom

maven命令之package:

若a項目依賴於b項目,那麼我把b項目 [package] , 此時只是打包成jar放在自己的 target 目錄下面,大家都知道target目錄是存放編譯後文件的, 如上原因,此時若編譯a項目會提示啓動失敗。

 

maven命令之install:

若基於上面所說的情況,把b項目 [install],此時會把編譯後的jar或者war包安裝在maven的本地倉庫中,此時編譯a項目成功,應爲b的依賴在倉庫中可找到。

 

maven的clean:

clean命令是清除target包下面的所有文件,main目錄是存放我們的java文件,test是存放我們測試周期時需要用的測試文件。

 

maven的test命令:

test命令是在我們編譯打包時候(package/install),會去編譯執行 src/test/java 目錄下面 Junit  單元測試代碼,如果使用的是idea我們點擊maven project選項上方藍色閃電按鈕,看到test選項成爲了灰色,則編譯時候會跳過junit單元測試

 

注:由於開發軟件問題(編輯軟件項目兼容問題),有時候我們打包會失敗,可以運行以下打包命令來打包

package -DskipTests -DprofileName=test -pl ss-job -am -f pom.xml

maven 三種狀態說明如下 -pl -am -amd

 

 

maven的pom文件中<dependency>與<parent>的區別

首先明確一點<dependency>與<parent>都是依賴別的項目,比如說B使用<dependency>依賴了A,C使用<dependency>依賴了A,B項目可以使用A項目中<dependency>中依賴jar的StringUtils的方法,但是不能調用A項目中自己定義的類和方法,C項目兩者都可以使用,代碼如下:

A:
import org.apache.commons.lang3.StringUtils;
 
public class TestUtil {
 
    public void show(){
        System.out.println(StringUtils.isNotEmpty("123"));
    }

<groupId>com.mycompany</groupId>
  <artifactId>test1</artifactId>
  <version>1.0-SNAPSHOT</version>
 <packaging>war</packaging>
 
<dependencies>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.7</version>
    </dependency>
</dependencies>

 

B:

<groupId>com.mycompany</groupId>
  <artifactId>test15</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
 
 <parent>
     <groupId>com.mycompany</groupId>
     <artifactId>test1</artifactId>
     <version>1.0-SNAPSHOT</version>
</parent>
 

C:

<groupId>com.mycompany</groupId>
  <artifactId>test20</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
 
<dependencies>
    <dependency>
      <groupId>com.mycompany</groupId>
      <artifactId>test1</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
 

maven的pom文件中<dependencyManagement>與<dependencies>的區別


<dependencyManagement>  
      <dependencies>  
            <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
                <version>3.2.7</version>  
            </dependency>  
    </dependencies>  
</dependencyManagement>  
<dependencies>  
       <dependency>  
                <groupId>org.springframework</groupId>  
                <artifactId>spring-core</artifactId>  
       </dependency>  
</dependencies>

1.在同一個pom文件下,如果<dependencies>和<dependencyManagement>中都對該jar做了依賴,以<dependencies>的爲準,優先級高於<dependencyManagement>。若前者沒有對其依賴,而後者對其有依賴,則以後者爲準。<dependencyManagement>裏只是聲明依賴,並不實現引入.

2.在不同的pom文件中,存在父子相互依賴關係的,父項目的pom中<dependencyManagement>中對該jar做了依賴,而子項目中<dependencies>又依賴了該jar,如果子項目中沒有指定<version>和<scope>,則繼承父項目中該jar的<version>和<scope>。如果子項目中指定了<version>和<scope>,以子項目的爲準。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章