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