maven--初见

maven:
1.唯快不破.maven快速入门
  1.1.maven介绍及环境搭建.
         maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.
         解压apache maven,,,
           1.会发现在bin目录下面--->包含了mvn的运行脚本.
           2.boot 目录包含了一个类加载器的框架.maven使用它来加载自己的类库.
           3.conf 是配置文件目录.比如以后经常用到的settings.xml
           4.lib目录下面就是maven所使用到的一些类库.

  1.2. maven目录结构(maven规定):
        E:.
        |   pom.xml (Pom.xml要放在项目根目录下面.与src同级.)
        |   
        +---src
        |   +---main
        |   |   \---java (该目录下面就是项目包)
        |   |       \---package(在这里面放置主代码  !!!!!!!!!)
        |   |                           
        |   \---test (测试)
        |       \---java
        |           \---package(测试代码)
        |                               
        \---target


2.稳打稳扎-maven基础知识
   2.1常用的构建命令介绍.(cmd下面)
        mvn -v  :查看maven版本
        mvn compile :编译
        mvn test : 测试
        Mvn package :打包我们的项目
        mvn clean: 删除target. Target:文件夹:项目经过编译的字节码文件和测试报告.
        mvn install :将指定项目打包成jar文件 发布到本地仓库中!!!!!!!!

        **Note: 当我们执行mvn compile 的时候,如果程序用到了其他的支持包,那么就回去pom.xml中查找是否引入了该依赖包的坐标.
                如果引入了坐标,那么就回去本地仓库中查找.如果仓库中有所依赖的jar包,会将该jar包加入项目的classpath下面.
                如果本地仓库中没有该jar包,就会去网上mven中央仓库中查找下载.并放到本地仓库中,供我们项目进行使用.
          note:pom.xml用于管理项目依赖和构建过程.~!@#$%^&*()_+
    2.2自动创建目录骨架
        maven为我们提供了archetype插件,用于创建符合maven规定的目录骨架.
        cmd:
         1.mvn archetype:generate 按照提示进行选择
         2.mvn archetype:generate -DgroudId=组织名,公司网址的反写+项目名
                                  -DartifactID=项目名-模块名
                                  -Dversion=版本号
                                  -Dpackage=代码所存在的包名.
    2.3maven中的坐标和仓库
         1.在Maven中,任何一个依赖、插件或者项目构建的输出,都可以称之为~~构件。
           构件是使用~坐标~作为其唯一的标识.
         2.组成基本~坐标:通过pom.xml中的<groupId><artifactId><version>
         3.仓库:管理项目的依赖的.
            本地仓库和远程仓库,如果在本地仓库中找不到我么需要的构建,就会去maven的
                全球中央仓库中查找.查找到就会下载到本地仓库中供我们使用.如果远程中央仓库
                也找不到,就会报错.

            maven默认提供了全球中央仓库地址,从本地maven的lib下面找到maven-model-builder-3.3.9.jar.
            打开找到pom.xml:  https://repo.maven.apache.org/maven2

            镜像仓库:maven的中央仓库的服务器都是位于国外的. 一些原因导致无法访问外网. 如此,国内有
                     这些仓库的镜像仓库,我们可以直接访问国内的镜像仓库,这样更快更稳定.

                     设置镜像仓库位置:
                       打开E:\Java\tools\maven\apache-maven-3.3.9\conf\settings.xml.
                        一旦配置了镜像仓库,所有访问都会转到镜像仓库.原仓库就不能直接被访问
                       <mirror>
                          <id>maven.net.cn</id>
                          <mirrorOf>central</mirrorOf><!--指为哪个仓库配置镜像-->
                          <name>central mirror in china</name>
                          <url>http://maven.net.cn/content/groups/public</url><!--国内镜像仓库的地址http://my.repository.com/repo/path-->
                        </mirror>

            更改仓库的默认路径:
                 默认:maven从远程仓库中下载的构建默认是存放在当前用户目录中的.
                         如本地:C:\Users\Bradley\.m2\repository
                 修改:在settings.xml文件中:    <localRepository>/path/to/local/repo</localRepository>
                      修改成:<localRepository>E:/Java/tools/maven/repo</localRepository>
                      同时可以copy一份settings.xml到E:/Java/tools/maven/repo目录下:以后更新maven的版本就不用修改settings.xml文件.
     
     2.4 在eclipse中安装maven插件以及创建maven项目.
           具体看word文档
     2.5 maven的生命周期和插件.
         一个项目构建的完整过程包括:
           清理,编译,测试,打包,集成测试,验证,部署.
         maven的生命周期:
           1.clean:清理项目
               pre-clean:执行清理前的工作
               clean:清理上一次构建生成的所有文件
               post-clean:执行清理后的文件
           2.default:构建项目(最核心)
               包括:compile,test,package,install
           3.site:生成项目站点(根据pom.xml中的信息自动生成一个站点)
                pre-site:在生成项目站点前要完成的工作.
                site:生成项目的站点文档.
                post-site:在生成项目站点后要完成的工作.
                site-deploy:发布生成的站点到服务器上.
     2.6 pom.xml常见元素介绍:
          <!-- 坐标信息 -->
          <groupId>com.imooc.hi</groupId><!-- 主项目的标识,用来指定当前的maven属于哪个实际的项目:反写公司网址+项目名 -->
          <artifactId>hi</artifactId><!-- 实际项目中的一个模块的标识:项目名+模块名 -->
          <version>0.0.1-SNAPSHOT</version><!-- 当前项目的版本号 -->
          <!--
                第1个数字:表示大版本号,第2个数字:表示分支版本号,第3个数字:表示小版本号
                snapshot:快照,alpha:内部测试,beta:公测,Release:稳定,GA:正式发布
           -->
          <!-- packaging:maven项目打包方式,不指定的话,默认就是jar,还可打包成:war zip pom-->                                
               <packaging>jar</packaging>
          <!-- name:项目描述名 -->
          <name>hi</name>
          <!-- 项目的地址 -->
          <url>http://maven.apache.org</url>
          <!-- 项目描述 -->
          <description></description>
          <!-- 项目开发人员的列表 -->
          <developers></developers>
          <!--许可证信息 -->
          <licenses></licenses>
          <!-- 组织信息 -->
          <organization></organization>
          <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          </properties>
          <!-- dependencies依赖列表 ,可包含多个依赖项-->
          <dependencies>
            <!-- 依赖项 -->
            <dependency>
              <!-- 依赖项通过如下坐标确定依赖项所在的位置:在依赖项里面~指定坐标 -->
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>3.8.1</version>
              <scope>test</scope><!-- 依赖的范围:此时表示在测试范围内有效 -->
              <type>jar</type>
              <optional>false</optional><!-- 设置依赖是否可选,默认是false -->
              <!--exclusions:排除依赖传递列表  -->
              <exclusions><exclusion></exclusion></exclusions>
            </dependency>
          </dependencies>
          
          <!-- 依赖的管理 -->
          <dependencyManagement><!-- 主要用于定义在父模块中,供子模块所继承用的. -->
            <dependencies>
                <!-- <dependency></dependency> -->
            </dependencies>
          </dependencyManagement>
          
          <!-- 为构建的行为提供相应的支持,下面经常用到的就是plugins -->
          <build>
            <!-- 插件列表 -->
            <plugins>
                <plugin><!-- 在plugin里面依旧要引入~坐标 --><!-- 此时运行package命令是同时将源码进行打包 -->
                    <groupId></groupId><artifactId></artifactId><version></version>
                </plugin>
            </plugins>
          </build>
          
          <!-- 用于子模块中对父模块poxm的继承
          <parent></parent>
          -->
          <!-- 集合运行的多个maven项目,编译多个maven模块
          <modules><module></module><module></module></modules>
           -->
    2.7依赖范围<dependencies><dependency><scope>xxx</scope></dependency></dependencies>
        在开发时,如果要使用某一个框架,就要将该框架的jar包引入
        到项目的classpath路径中,这样我们的项目就可以使用该框架
         为我们封装的一些方法.maven中为我们提供了多种classpath:
         编译,测试,运行...
         compile:默认的范围,编译,测试,运行 都有效.
         provided:在编译和测试时有效.在最后的运行时不会被加入.
         runtime:在测试和运行时有效.(eg:jdbc驱动的实现).
         test:只在测试时有效.
         import:导入的范围,只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置.
                表示从其他的pom中继承过来的依赖.
    2.8依赖传递.具体看demo in eclipse
    2.9依赖冲突.
        1.短路优先(会优先解析路径短的)
          A-->B-->C-->X(jar)
          A-->D-->X(jar) (first)
        2.先声明先优先.(路径长度相同)
          如果在路径长度相同时,则谁先声明.先解析谁.
    3.0聚合和继承
          对于多个maven项目我们想将其安装到本地仓库中,那么就需要依次对
          每个项目进行install命令.maven中有一种方式.可以放到一起运行-->聚合.
note:如何寻找第三方jar文件坐标:
    1. http://www.mvnrepository.com
    2. eg: input commons-io in search box
    3. click the jar item in what we searched.
    4. choose one with a spacial version. and click
    5. then the next page will show the location of the jar.

note:经常看到maven出错了,但是把错误解决了,还是看到项目名上面有红叉叉,进行如下操作:更新一下maven项目就可以了.
    点击项目名,右键,选择maven-->update project...更新一下就ok了.

3.使用maven创建一个web项目.发布到jetty中.







































猜你喜欢

转载自blog.csdn.net/YAREI/article/details/50994497
今日推荐