Maven笔记
Maven基础
Maven是一个开源项目、用于构建项目、依赖管理
坐标:Apache(公司名称)+struts2(项目名称)+2.3.24(版本信息) -- > struts2-core-2.3.24.jar
1.maven的好处
同样的代码,实现功能一样,maven的大小比较小,项目中没有依赖jar包,通过maven配置管理
Maven项目中需要一个jar包,只需要在Maven项目中配置jar包坐标信息,其实就是依赖管理
Maven项目配置具有继承关系
2.maven的好处如何实现
两大核心:1.依赖管理 2.项目构建
项目构建:编译、测试、打包、部署
web项目启动mvn命令:mvn tomcat:run
3.maven安装、配置本地仓库
安装:
maven程序属于java开发,需要依赖JDK
官网下载maven的jar包,解压后,配置环境变量
mvn -v //查看安装信息
仓库类型:本地仓库、私服仓库、中央仓库
本地仓库配置:
maven/conf/settings.xml文件
<localRepository>:参数指定本地仓库路径
4.maven项目标准目录结构
项目名称:
.settings
src:项目源码
main
java:java代码
resources:项目配置文件
webapp:
image:图片
css:样式
jsp:页面文件
WEB-INF
web.xml:web项目配置文件
index.jsp:首页
test
java:单元测试类
resources
target:源码编译后的代码输出
.classpath
.project
pom.xml:maven项目配置核心文件
5.mavne的常用命令
mvn命令运行的其实就是maven的jar包(插件jar包)
mvn clean:清理项目根目录下的target //maven-clean-plugin(插件jar包)
mvn compile:编译项目,生成target包 //mavne-compile-plugin
mvn test:执行单元测试类(xxxxTest.java,必须以Test结尾) //src/test/java
mvn package:根据pom.xml文件配置生成jar包或web包,生成路径:target
mvn install:打包并存放到本地仓库 //根据settings配置文件的路径
mvn deploy:打包上传到私服
生命周期:mvn命令的执行流程,后面的命令会默认执行前面的命令
6.maven整合web项目案例
1.Eclipse中的m2e插件中可以使用maven创建项目
Help-->Eclipse--> Marketplace搜索maven插件Maven Integration for Eclipse安装即可
2.配置maven程序安装路径
Preferences-->Maven-->Installations
3.指定配置文件(settings.xml)
Preferences-->Maven-->User Settings
4.构建仓库索引(提高仓库速度)
show view-->maven Repository
在本地仓库里,右键-->Rebuild Index
7.工程创建
Maven Project :普通maven项目或父工程
maven-archetype-quickstart:jar工程
maven-archetype-webapp:web工程
Maven Module:子工程
8.pom.xml配置JDK编译版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
9.依赖范围
如果使用到tomcat自带的jar包,避免部署运行时冲突,需要将依赖关系设置为:provided
调试运行:需要添加源码 Debug As --> Source --> add --> project --> 选择项目
传递依赖冲突
A依赖B , B依赖C ,C就是A的传递依赖, B就是A的直接依赖
依赖原则:
顺序优先原则:pom.xml配置中的依赖配置顺序靠前优先
路径原则:直接依赖优先于传递依赖
排除原则:在直接依赖中,排除指定传递依赖(Exclude Maven ArtifactId)
版本锁定:直接锁定版本
<properties>
<spring.version>1.1.0</spring.version>
<xxx.xxx>xxx</xxx.xxx>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>