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>,以子項目的爲準。