总结40 Maven的概念与应用

8 篇文章 0 订阅

在这里插入图片描述

概念

Maven是用来便捷地操作项目的工具
它涵盖两大功能:
一:依赖管理(Maven的最大意义)
也就是一键管理Jar包
那么’管理jar包’有什么意义呢?
在往常,我们使用jar包都需要导入,因此,每做一个项目或者模块就导入一次,实在是太过麻烦.
但是,Maven能够解决这个问题,我们只需要指定一个存放jar包的文件夹,将要用到的jar包放入该文件就可以了
二:一键构建

一键重构分为三大类
分类一:编译Java代码
Maven可以方便效率的编译java代码,这跟IDEA工具一样.但正因为如今的IDEA具有这个功能,所以它的意义不大了.
分类二:测试Java代码
用于测试Java代码,跟单元测试的’@Test’意义一样,同样是因为有相同功能的存在,所以意义不大

分类三:打包Java/Web项目
能够快速,方便地打包Java项目,目前还能用到这个功能

安装与配置

进行安装

将官网下来的压缩包解压在硬盘目录即可,路径名不允许存在空格和中文.

配置环境

在用户变量处编辑Path变量,添加"%MAVEN_HOME%\bin"
在这里插入图片描述
在系统变量处,创建名为’MAVEN_HOME’的变量,变量值为Maven所在目录
在这里插入图片描述

配置jar包仓库

插曲:本地Jar包仓库/私服Jar包仓库/官方jar包仓库 的概念
我们要知道Maven当下最大的作用就是Jar包管理.
在我们创建要将Maven应用到项目中时,Maven会从Jay包仓库读取Jar资源.
Maven会先读取本地Jar包,
如果本地不存在Jar包仓库,就会从你所指定的,网络上的Jar包仓库获取,
如果还获取不到Jar资源,那就会从Maven官方的Jay包仓库获取,但是速度会很慢

编辑conf目录下的’settings.xml’.
一.在localRepositor标签处配置本地Jar包仓库

<localRepository>D:\Maven_Repository</localRepository>//指定一个Jar仓库的目录

在这里插入图片描述

二.在mirrors标签中中配置私服Jar包仓库
在这里插入图片描述

<mirror>
	<id>central</id> 
	<name>aliyun maven</name>//为私服起个具体名字
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>//私服的jar连接,此处用到了阿里云
	<mirrorOf>central</mirrorOf>        
</mirror>

目录结构

要想让Maven起作用,不管是手动使用Maven,还是将Maven集成到IDEA中,都需要按照图下的目录结构才能生效.不同的目录有不同的作用.

在这里插入图片描述
注意:如果是Druid.properties这样的文件,那么在Maven工程中,需要放在’resources’目录下在这里插入图片描述

手动使用(简略)

打开CMD,用cd命令跳转到src目录的父级目录下,输入相应命令
命令一:清除
mvn clean 清除所有编译后的资源
命令二 编译
mvn compile 编译maven程序
命令三 测试
mvn test 不仅编译,而且执行测试(会把所有的测试代码都执行一遍)
命令四 打包
mvn package 不仅编译,而且测试,而且打包
命令五 放置成品到本地仓库
mvn install 不仅编译,测试,打包,而且把打包后的程序,放在了本地仓库
命令六 将成品发布到私服(服务器)中
mvn deploy 不仅编译,测试,打包,把打包后的程序放在本地仓库,而且会把打包后的程序上传到私服中.

集成IDEA使用步骤

OR.应用Java项目

一.配置Maven
在这里插入图片描述
在这里插入图片描述
二.创建Maven项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OR.应用到Java模块

一.配置Maven模块
在这里插入图片描述
在这里插入图片描述
二.创建Maven模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用到Web项目/模块

步骤一:修改Pom配置信息
在我们创建完了Maven的项目或模块后,默认为这是一个普通的Java项目.
如果你让这成为一个Web模块/项目,那么就需要更改Prom配置文件.
添加packaging标签
格式:

<packaging>war</packaging>

在这里插入图片描述
步骤二:在main目录下创建webapp目录,并生成WEB-INF目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
步骤三:将生成出来的WEB-INF目录拖到webapp目录下
在这里插入图片描述

步骤四:配置web.xml文件,以便能够运行tomcat.
在这里插入图片描述
参考:https://blog.csdn.net/chinatopno1/article/details/104289566

配置Pom文件

依赖管理(Jar包)

这就是我们的’依赖管理(管理Jar包),只要设置了这个,那么所有项目和模块就能够都调用到我们制定的Jar包了
要在pom.xml文件中配置
格式:
在这里插入图片描述

        <dependency>
            <groupId>仓库中,Jay包所在的第一父级路径</groupId>
            <artifactId>仓库中,Jar包所在的第二父级路径</artifactId>
            <version>仓库中,Jar包所在的第三父级路径</version>
            <scope>provided</scope>
        </dependency>

配置Tomcat插件

我们需要各种存放在本地仓库的插件(如Tomcat)引入到Pom的配置文件中,以便能够应用到Web项目或模块
列如:

         <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <!--uriEncoding:用来解决Tomcat7插件的get请求的中文乱码问题-->
                    <uriEncoding>UTF-8</uriEncoding>
                    <!--port:端口号-->
                    <port>8080</port>
                    <!--path:设置虚拟路径-->
                    <path>/tomcatceshi</path>
                </configuration>
            </plugin>

解决Jar包冲突

当Tomcat中的jar包和IDEA具有的Jar包发生重复时,会报错
背景:
我们在本地仓库中导入了Tomcat的Jar包,但我们的IDEA也集成了Tomcat插件.
这个时候,如果运行程序的话,那么就容易出现jar包冲突而报错.
解决方案就是通过scope标签规定该Jar包的作用域范围.
比如我们规定作用域范围为’provided’的话,那么该Jar只会在编译及测试时起效,当你运行时(此时正好要调用idea中集成的tomcat),那么就不会生效
在这里插入图片描述
格式:<scope>自定义作用域范围</scope>
列如

        <!--jsp-->
  <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.0</version>
            <scope>provided</scope>
        </dependency>
   <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

成品配置(直接拿来用)


     <dependencies>

		<!-- 导入mybaits-spring包 用于ssm整合
		<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>


		   <!-- log4j 日志文件 最重要的功能是能够输出真实的sql执行语句 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
        </dependency>


    <!-- 分页查询插件的Jar包 'PageHelper' -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <!-- 此处为高版本的5.1.2 因此在sqlMapConfig.xml中的配置格式会同低版本的不同 -->
            <version>5.1.2</version>
        </dependency>

		        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>


        <!-- 导入FiliUpload 用于快捷地获取前端所提交的文件数据 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

   <!--SpringMVC坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

   <!-- AOP的jar包 切入点表达式解析-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.8</version>
        </dependency>

       <!--spring的事务管理主框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>

        <!-- 导入Spring框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
       
        <!--druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
        
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
            <scope>runtime</scope>
        </dependency>
        
        <!--jdbcTemplate-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
        
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        
        <!--servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        
        <!--jsp-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.0</version>
            <scope>provided</scope>
        </dependency>
        
        <!--jstl-->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        
        <!--beanUtils-->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.2</version>
            <scope>compile</scope>
        </dependency>
        
    <!-- 导入jackson坐标 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
        
        <!--jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <showWarnings>true</showWarnings>
                </configuration>
            </plugin>
            <!--tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <!--uriEncoding:用来解决Tomcat7插件的get请求的中文乱码问题-->
                    <uriEncoding>UTF-8</uriEncoding>
                    <!--port:端口号-->
                    <port>8080</port>
                    <!--path:设置虚拟路径-->
                    <path>/day24</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

运行

运行WEB项目

在这里插入图片描述
在这里插入图片描述

运行普通项目

依照生命周期来运行
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值