Maven入门使用

Maven

简介

好处

  1. 解决jar包的冲突
  2. 帮忙编译java文件(自身集成tomcat插件)
  3. 单元测试(一次性执行指定目录下的单元测试)
  4. 打包项目

特点

  1. 依赖管理:传统web项目,jar都是放在了项目中,maven开发的项目,jar不在项目中,只存放jar的坐标(依赖管理),在jar包仓库。
    优点:jar包在不同项目重复利用

  2. 一键构建:项目往往要经历,编译、测试、运行、打包、安装、部署等一系列的操作
    而这些都可以交给maven来做。

maven安装

  1. 下载装包
  2. 复制解压后的目录,添加到系统变量,添加这个变量到path中 %变量% \bin 。
    测试是否安装成功 :打开cmd 运行mvn -v。
    *注: maven的运行依赖于,java_home,所以安装maven的时候,先安装jdk。

maven包 目录介绍

  1. bin -> mvn 。主要是用来构建项目的
  2. boot maven自身运行的类加载器
  3. conf -> settings.xml 配置文件
  4. lib maven自身运行所需要的jar

配置 conf\settings.xml

  1. F:/software/apache-maven-3.6.1/repository
  2. http://maven.aliyun.com/nexus/content/repositories/central/
  3. F:/software/apache-maven-3.6.1/repository 就是我本地仓库(存放jar)的位置
    当导入项目的时候,所需要的jar先到本地仓库来找,如果找不到,在根据坐标到远程仓库下载到本地 仓库中,然后引用到项目中,如果远程仓库没有则到中央仓库中下载。
    远程仓库【私服】:公司的仓库,和自己的电脑在同一个局域网内
    中央仓库:包含了所有的开源jar(maven官方仓库、阿里云镜像仓库)

maven标准目录结构

  1. src/main/java 核心代码部分
    src/main/resources 配置文件部分

  2. src/test/java 测试代码部分
    src/test/resources 测试配置文件部分

  3. src/main/webapp 页面资源

maven常用命令

  1. mvn clean 删除target目录(class文件)
  2. mvn compile 生成target目录
  3. mvn test 在target目录下生成 test-class (编译了src/test文件)
  4. mvn package 打包放在target目录下
  5. mvn install 命令包含了(mvn clean、mvn compile、mvn test、mvn package),还将打包好的文件放置本地仓库中。

生命周期

  1. 清理生命周期: 清除项目编译信息(mvn clean)、
  2. 构建时候 默认生命周期 :
    编译(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

  1. 首先保证本地已经安装好了maven
  2. 到IDEA settings 找到maven设置对应的文件目录
  3. 到maven -->Runner 中配置 VM Options: -DarchetypeCatelog=internal 保证在不联网时候,也可以创建本地已经下载好maven插件的maven工程。

导包解决冲突

  1. maven工程中,导包就要考虑到jar的冲突,遵循第一优先原则,导入先被声明的包
  2. 直接依赖和传递依赖(通过传递直接依赖传递进来的包),路径近者优先原则
  3. 直接排除法,在优先级低的包下面加

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值