maven

1、安装maven:解压缩、添加M2_HOME、添加环境变量path
2、创建maven_home文件夹,创建项目mvn_ch01,在其下面建立src、pom.xml,在src下面简历main、test、main下面建立java文件夹
3、编写类,在java文件夹下面依照类的包逐层创建文件夹,将此类放入最后一级文件夹
4、进入mvn_ch01
4.1、mvn compile ,执行后会在src层面产生target文件夹,最后一级是存放.classes文件
4.2、mvn test 依照建立类的步骤建立测试类,进行测试
4.3、mvn package 将mvn_ch01 按照pom.xml中定义的gav 打成jar包
4.4、mvn install 别的项目如果依赖这个应用,
4.5、mvn clean 清理产生的target文件
5、mvn archettype:generate -DgroupId=cn.xxx.maven -DartifactId=mvn03 -Dversion=0.0.1-SNAPSHOT

6、maven内置变量:
    ${basedir} 项目根目录
    ${project.build.directory} 构建目录,缺省为target
    ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
    ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
    ${project.packaging} 打包类型,缺省为jar
    ${project.xxx} 当前pom文件的任意节点的内容

依赖传递

<scope></scope>
compile: 编译范围有效,在编译和大宝石都会将依赖存储进去
provided : 编译、测试过程有效,最后生成war包时不会加入,诸如servlet-api,因为servlet-api在tomcat等服务器的lib中已经存在,如果再打入保重会冲突
test:测试范围有效,编译和打包时不会使用这个依赖
runtime:测试、运行过程有效,编译时不依赖
默认:runtime

直接依赖/间接依赖:
相同依赖的不同版本之间,先依赖谁,就是谁的版本
两个应用都依赖的相同的一个jar包的不同版本
1、如果有第三个应用同时依赖【同层次依赖】了这两个应用,pom.xml中先依赖谁,就是谁的版本
2、如果上两个应用中有一个应用对某个jar包的依赖也是传递依赖,另一个是直接依赖,则在第三个应用中会使用直接依赖的
【使用依赖层次较少的】

聚合:父知道,子不知道
继承:子知道,父不知道

仓库:

你可能感兴趣的:(maven)