第一讲:
maven maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。maven安装与下载: 1、确定jdk已经安装并且配置 2、安装maven 3、配置maven环境变量:M2_HOME D:\maven\apache-maven-3.3.9 (就是maven的安装目录) HelloWorld的实现 modelVersion:POM模型版本4.0.0固定 groupId:一般指某个公司或者某个组织的某个项目,比如org.springframework artifactId:一般指某个具体项目的某个具体模块,比如spring-context Version:项目的版本 Maven常见命令: complie 编译 clean 清空 test 测试 package 打包 install 将项目安装到本地仓库 Mvn远程仓库地址:http://mvnrepository.com/
第二讲,我的实践:
使用idea创建helloWorld的maven项目:
Mvn远程仓库地址:http://mvnrepository.com/ 这个很重要,我们的需要什么jar包都可以在上面搜寻坐标 idea的时候文件夹的颜色标识这个也重要,不然可能无法new出想要的file 然后就是测试各个maven命令:
第三讲:
maven仓库的概念:
Maven远程仓库配置文件:
$M2_HOME/lib/maven-model-builder-3.3.9jar下的文件:org/apache/maven/model/pom-4.0.0.xml-- central Central Repository https://repo.maven.apache.org/maven2 default -false
maven依赖:
我们可以将一个项目install到本地仓库,然后本地其他项目引用这个项目,就是引用这个项目的下标,如:<dependencies> <dependency> <groupId>com.java1234.user</groupId> <artifactId>user-dao</artifactId> <version>1.0-SNAPSHOT</version> </dependency></dependencies>我们做个例子:使用maven创建ssm项目的各个模块并且成功运行:关键代码:其实没有什么关键代码,就是ssm的整合搭建
依赖的特性:
最短路径原则和最先声明原则。就是如果A项目中引用了B和C项目,B中间接引用了F,C直接引用了F,那么A中引用F依赖是通过C来达到的,就近原则。当两边路径相等的时候,哪个项目被先引用就使用哪个项目得到依赖。
第四讲:
maven的聚合与继承:
聚合: 新的maven项目中,这样聚合其他项目:注意该项目中package只能为pom: ../user-dao ../user-service pom
作用:方便统一管理
继承: 继承实现: 新建父项目,然后在子项目坐标前加上继承描述:com.java1234.user user-parent 1.0-SNAPSHOT ../user-parent/pom.xml
relativePath一定要加上。
注意:一定要在子项目坐标前,然后就可以使用继承了。
方便版本版本管理与依赖管理 使用了继承子项目的groupId可以删掉了,默认使用的是父项目的groupId。默认状况下 version和packing也是继承父项目的,适当情况下可以省略不写。webapp项目注意packing不要省略,因为父项目一般是jar形式打包,webapp是war包 每个子项目中都有好多jar,它们可能太多的时候导致版本混乱,这样的话我们可以将这些依赖都假如到父类的dependency里面,然后子模块继承父模块可以省略子模块中的版本和scope。都使用父类的版本其他。 注意是放在dependencyManagement里面的dependencies里面添加依赖org.springframework spring-context ${spring.version}
可以在pom里面声明版本属性,然后在dependency里面应用它,我们常用来管理版本,使用方式看例子:
4.3.5.RELEASE 3.4.1 org.springframework spring-context ${spring.version}
我再父项目中装载了其他的子项目,便于管理。使用的idea,感觉还是新建一个项目和新建其他模块比较好一点。虽然效果好像差不多。
最终的项目各模块的pom:
4.0.0 com.java1234.user user-parent 1.0-SNAPSHOT ../user-parent/pom.xml user-web war user-web Maven Webapp http://maven.apache.org junit junit javax.servlet javax.servlet-api javax.servlet.jsp jsp-api javax.servlet jstl com.java1234.user user-service 1.0-SNAPSHOT user-web
4.0.0 com.java1234.user user-parent 1.0-SNAPSHOT ../user-parent/pom.xml user-dao jar junit junit org.mybatis mybatis mysql mysql-connector-java
4.0.0 com.java1234.user user-parent 1.0-SNAPSHOT ../user-parent/pom.xml user-service jar org.springframework spring-context org.springframework spring-context-support org.springframework spring-core org.springframework spring-beans org.springframework spring-web org.springframework spring-webmvc org.springframework spring-jdbc org.springframework spring-aop org.springframework spring-tx org.springframework spring-aspects org.mybatis mybatis-spring junit junit com.java1234.user user-dao 1.0-SNAPSHOT
4.0.0 com.java1234.user user-parent 1.0-SNAPSHOT ../user-parent/pom.xml user-service jar org.springframework spring-context org.springframework spring-context-support org.springframework spring-core org.springframework spring-beans org.springframework spring-web org.springframework spring-webmvc org.springframework spring-jdbc org.springframework spring-aop org.springframework spring-tx org.springframework spring-aspects org.mybatis mybatis-spring junit junit com.java1234.user user-dao 1.0-SNAPSHOT
4.0.0 com.java1234.user user-parent 1.0-SNAPSHOT pom 4.3.5.RELEASE 3.4.1 ../user-dao ../user-service ../user-web org.springframework spring-context ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-aspects ${spring.version} org.mybatis mybatis-spring 1.3.0 junit junit 4.12 org.mybatis mybatis ${mybatis.version} mysql mysql-connector-java 5.1.36 javax.servlet javax.servlet-api 3.1.0 javax.servlet.jsp jsp-api 2.2 javax.servlet jstl 1.2