maven 简介

maven最主要体现在两个词上:项目和管理

maven给整个开发团队找出了一种能够更加科学的去管理我们项目的思想。maven通过使用配置文件的方式使得项目在管理和交接的过程中成本变得非常低。

maven提出了一种叫做maven仓库的概念,使得我们可以将第三方和我们需要引用的项目都放置在maven仓库当中。如果其他人或项目组也需要使用,就可以直接通过maven进行配置就行。这样就可以将人员成本、沟通成本等等都进行降低。

Maven是一个项目管理和整合工具。Maven为开发者提供了一整套完整的生命周期框架。开发团队几乎不用花多长时间就能够自动完成工程的基础构建配置。他填补了Ant的缺点,Maven第一次支持了从网上下载的功能,仍然采用xml作为配置文件格式Maven专注的是项目依赖,使用java编写。

举个例子:加入我们现在想做一份菜:糖醋排骨。如果我们想要做这道菜,那么我们首先要先去菜市场买排骨、糖、醋、......,而且在做的时候还要注意使用糖醋的用量等等。那么如果有一个超市,该超市有卖糖醋排骨的料理包,这是不是就能很大的节省我们做饭和买菜的时间开销。其实maven就是这个卖料理包的超市,当人卖的不是料理包,而是一系列的jar包。这样我们在写代码的时候就不需要去其他网站上下载一大堆的jar包。

maven四大特征

1 依赖管理系统

Maven为java世界引入了一个新的依赖管理系统jar包管理 jar包升级时修改配置文件即可。在java世界中,可以用gropId、artifactId、version组成Coordination(坐标)唯一标识一个依赖。

任何基于maven构建的项目自身也必须定义这三个属性。

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>

坐标属性的理解

   Maven坐标为各个组件引入了新秩序,任何一个组件都必须明确定义自己的坐标。

        groupId

                定义当前Maven项目隶属的实际项目-公司名称。(jar包所在仓库路径)由于maven中模块的概念,因此一个项目实际往往会被分成多个模块。比如Spring是一个实际的项目,其对应的Maven模块会有很多,比如Spring-croe,spring-webmvc等。

        artifactid

                该元素定义实际项目中的Maven模块-项目名称,推荐的做法是使用实际项目名称作为atrifactid的前缀。比如:Spring-bean,Spring-webmvc等。

        version

                该元素定义Maven项目当前所处的版本。

        采用依赖管理的好处是能够大大减少我们对jar包下载和管理的难度。比如项目当中如果有100个jar包,难道我们需要从网上下载这100个jar包吗?显然如果利用maven提供给我们的坐标,就可以很快完成项目的构建。

2.多模块构建

后端把 :(controller)接收和返回数据,(service)业务处理:如爬虫,(dao)数据库交互。各自拆分出来。

我们在写项目的时候往往需要将 dao service controller 层分离讲一个项目分解为多个模块已经是一种通用的方式。

3. 一致的项目结构

我们当初在eclipse上边写的项目如果导入到idea上边,那么就会出现很多奇奇怪怪的问题,同理,将idea上边的项目导入到eclipse当中也是一样。究其原因是因为我们在这两个编译器上的项目的目录结构是不一致的。而maven在设计之初的理念就是Conversion over configuration (约定大于配置)。其制定了一套项目目录结构作为标准的java项目结构,解决不同的ida带来文件目录不一致的问题。

4. 一致的构建模型和插件机制

这一个项目当中我们往往会引入很多插件,比如tomcat服务器或者jetty(嵌入式服务器),为了实现项目组内插件的统一,maven提供了一套机制来包证这要机制的施行。

maven安装配置   (最下方是IDEA中maven的使用)

首先检查JDK

java -version

确保有了之后 下方链接下载 maven

链接:https://pan.baidu.com/s/1iC8EcPOcyzZtFevOvVRi6g 
提取码:9lza

解压后把maven的根目录配置到下同环境变量中Maven_HOME,将bin目录配置到path变量中。

注:maven解压后存放的目录不要包含中文和空格。

编辑环境变量 :MAVEN_HOME

变量值:maven 解压到的路径

如:

maven仓库repo maven仓库是干嘛的_学习

 

再  编辑系统变量  Path  

添加变量值:%MAVEN_HOME%\bin

查看是否配置成功

mvn -version

maven仓库repo maven仓库是干嘛的_maven_02

成功后,创建下列目录形式结构:

 

maven仓库repo maven仓库是干嘛的_maven_03

 pom.xml文件中写入

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
		
    <modelVersion>4.0.0</modelVersion>  <!-- 制定pom模型的版本 -->
	
    <groupId>com.qcby</groupId> <!-- 定义了项目属于那个组,这个组往往和项目所在的组织和公司存在关联 -->
    <artifactId>maven</artifactId><!-- 定义了当前Maven项目组中唯一的ID -->
    <version>1.0-SNAPSHOT</version><!--版本:SNAPSHOT(快照,开发版) alpha(内部测试版) beta(公开测试版) Relaese | RC (发布版) GA(正常版本) -->
	<packaging>war</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

在目录的main-->java下创建 包文件夹 再在其中创建 .java文件

maven仓库repo maven仓库是干嘛的_学习_04

修改默认仓库位置

打开下载的maven目录 -> conf -> settings.xml

加入

<localRepository>D:\maven</localRepository>

maven仓库repo maven仓库是干嘛的_java_05

再在下方,更换阿里镜像,加快依赖下载

<mirrors>
   <mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
 	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>
   </mirror>
 </mirrors>

maven仓库repo maven仓库是干嘛的_maven_06

 然后在cmd(管理员权限中),编译java文件

mvn compile

查看是否报错,如果.java文件代码编写没问题,上方配置一致。那应该没有问题 (本人测试没问题)

然后执行main方法

mvn exec:java -Dexec.mainClass="com.qcby.Hello"

        注意com.qcby.Hello。写成你自己创的文件名

成功后就显示:

maven仓库repo maven仓库是干嘛的_maven_07

        如果出错问题主要在于:

                1.不是使用管理员执行dos命名

                2.JDK环境变量配置有问题,重新配置jdk

                3.编写代码时,类里边有代码出现

IDEA编译器集成Maven环境

 常用的工具 idea 中就有自带的maven。可以很直观的创建maven。

 maven项目创建:

maven仓库repo maven仓库是干嘛的_maven_08

 

maven仓库repo maven仓库是干嘛的_maven_09

 

maven仓库repo maven仓库是干嘛的_idea_10

 这里可以修改为我们自己刚刚下载好的maven,和我们自己配好的 设置文件

maven仓库repo maven仓库是干嘛的_maven_11

( 也可以在创建完项目后更改

        选择:“File” ---> "Othoer Setting" --> "Settings for New Projects..." --->搜索“Maven”)

maven仓库repo maven仓库是干嘛的_maven_12

 

maven仓库repo maven仓库是干嘛的_学习_13

 test文件一样操作

maven仓库repo maven仓库是干嘛的_maven_14

 利用maven命令去编译这个项目

maven仓库repo maven仓库是干嘛的_maven_15

( 项目打包

maven仓库repo maven仓库是干嘛的_maven仓库repo_16

 )

 新建web项目和创建java项目基本一致,区别在于选择Maven模板(web项目选择webapp)

maven仓库repo maven仓库是干嘛的_maven仓库repo_17

 创建好后 

看看生成的文件中jdk版本:1.8

和单元测试版本:4.12

添加web部署插件

在build标签中添加plugins标签   两个插件自选:

.Jetty插件

<!-- 设置在plugins标准中 -->
<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.2.11.v20150529</version>
  <configuration>
    <!--热部署,每10秒扫描一次-->
    <scanIntervalSeconds>10</scanIntervalSeconds>
    <webApp>
      <!--可指定当前项目的站点名-->
      <contextPath>/test</contextPath>
    </webApp>
    <httpConnector>
      <port>9090</port> <!--设定端口号-->
    </httpConnector>
  </configuration>
</plugin>

.tomcat插件:

<!-- Tomcat插件 -->
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <!--配置端口号-->
    <port>80</port>
    <!--配置项目路径-->
    <path>/mavenWeb</path>
  </configuration>
</plugin>

启动项目

点击右上角的 “Add Configurations”,打开“Run/Dedug Configurations”窗口

maven仓库repo maven仓库是干嘛的_idea_18

访问路径 查看:

http://localhost:9090/test/index.jsp

 或tomcat

maven仓库repo maven仓库是干嘛的_学习_19

 访问路径 查看:

http://localhost/mavenWeb/index.jsp

暂且写到这。。

补:(8条消息) (IDEA)maven环境下项目的多模块构建的简单模拟测试。