Maven入门开发
Maven
简介
好处
- 解决jar包的冲突
- 帮忙编译java文件(自身集成tomcat插件)
- 单元测试(一次性执行指定目录下的单元测试)
- 打包项目
特点
-
依赖管理:传统web项目,jar都是放在了项目中,maven开发的项目,jar不在项目中,只存放jar的坐标(依赖管理),在jar包仓库。
优点:jar包在不同项目重复利用 -
一键构建:项目往往要经历,编译、测试、运行、打包、安装、部署等一系列的操作
而这些都可以交给maven来做。
maven安装
- 下载装包
- 复制解压后的目录,添加到系统变量,添加这个变量到path中 %变量% \bin 。
测试是否安装成功 :打开cmd 运行mvn -v。
*注: maven的运行依赖于,java_home,所以安装maven的时候,先安装jdk。
maven包 目录介绍
- bin -> mvn 。主要是用来构建项目的
- boot maven自身运行的类加载器
- conf -> settings.xml 配置文件
- lib maven自身运行所需要的jar
配置 conf\settings.xml
- F:/software/apache-maven-3.6.1/repository
- http://maven.aliyun.com/nexus/content/repositories/central/
- F:/software/apache-maven-3.6.1/repository 就是我本地仓库(存放jar)的位置
当导入项目的时候,所需要的jar先到本地仓库来找,如果找不到,在根据坐标到远程仓库下载到本地 仓库中,然后引用到项目中,如果远程仓库没有则到中央仓库中下载。
远程仓库【私服】:公司的仓库,和自己的电脑在同一个局域网内
中央仓库:包含了所有的开源jar(maven官方仓库、阿里云镜像仓库)
maven标准目录结构
-
src/main/java 核心代码部分
src/main/resources 配置文件部分 -
src/test/java 测试代码部分
src/test/resources 测试配置文件部分 -
src/main/webapp 页面资源
maven常用命令
- mvn clean 删除target目录(class文件)
- mvn compile 生成target目录
- mvn test 在target目录下生成 test-class (编译了src/test文件)
- mvn package 打包放在target目录下
- mvn install 命令包含了(mvn clean、mvn compile、mvn test、mvn package),还将打包好的文件放置本地仓库中。
生命周期
- 清理生命周期: 清除项目编译信息(mvn clean)、
- 构建时候 默认生命周期 :
编译(mvn compile)、测试(mvn test)、打包(mvn package )、安装 (mvn install )、部署deploy
pom.xml
包含的信息有,项目自身信息<project> ,运行依赖jar信息<dependenies>,插件信息(运行环依赖境)<build>~~```x,<plugins>
<!--mybatis-spring整合包-->
<dependency>
<groupId>org.mybatis</groupId> <!--公司组织名称-->
<artifactId>mybatis-spring</artifactId><!--公项目名称-->
<version>2.0.2</version><!--版本号-->
<scope>provided</scope> <!--只在写代码的时候有作用,真正项目运行时,不会用到-->(作用域:provided、test)
idea集成maven
- 首先保证本地已经安装好了maven
- 到IDEA settings 找到maven设置对应的文件目录
- 到maven -->Runner 中配置 VM Options: -DarchetypeCatelog=internal 保证在不联网时候,也可以创建本地已经下载好maven插件的maven工程。
导包解决冲突
- maven工程中,导包就要考虑到jar的冲突,遵循第一优先原则,导入先被声明的包
- 直接依赖和传递依赖(通过传递直接依赖传递进来的包),路径近者优先原则
- 直接排除法,在优先级低的包下面加
smm包的整合
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<shiro.version>1.2.3</shiro.version>
<mysql.version>5.1.6</mysql.version>
<mybatis.version>3.4.5</mybatis.version>
<spring.security.version>5.0.1.RELEASE</spring.security.version>
</properties>
<!-- 锁定jar包版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 项目依赖jar包 -->
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
</dependencies>
<!-- 添加tomcat7插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>