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>,以子项目的为准。
 

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