zoukankan      html  css  js  c++  java
  • maven概念

     1. 下载并解压Maven;Maven下载页
    2. 将环境变量M2_HOME设置为解压后的目录;

    3. 将M2环境变量设置为M2_HOME/bin(在Windows上是%M2_HOME%/bin,在Unix上是$M2_HOME/bin);
    4. 将M2添加到PATH环境变量中(Windows上是%M2%,Unix上是$M2);
     注意:Maven运行需要Java环境,因此也需要安装Java,Java版本1.5及以上;

     POM文件
    当你执行一条Maven命令的时候,你会传入一个pom文件(项目对象模型)。Maven会在该pom文件描述的资源上执行该命令。用以描述项目用到的资源,包括源代码目录、测试代码目录等的位置,以及项目依赖的外部jar包。

    构建生命周期、阶段和目标(相当一系列操作分组,组之间可独立和包含)
     
    Maven的构建过程被分解为构建生命周期、阶段和目标。一个构建周期由一系列的构建阶段组成,每一个构建阶段由一系列的目标组成。
     依赖和仓库
     
    依赖是你的项目用到的jar文件(java库)。如果在本地仓库中不存在该依赖,则Maven会从中央仓库程or远程仓库下载并放到本地仓库。
     插件(相当于 clean install)
     
    构建插件可以增加额外的构建目标。如果Maven标准的构建阶段和目标无法满足项目构建的需求,可以在POM文件里增加插件。

    详解: 
     POM文件即pom.xml,应该放在项目的根目录下。
     每一个项目都有一个POM文件。一个项目如果分为多个子项目,一般来讲,父项目有一个POM文件,每一个子项目都有一个POM文件。在这种结构下,既可以一步构建整个项目,也可以各个子项目分开构建。

    <groupId>com.jenkov</groupId>
    <artifactId>java-web-crawler</artifactId>
    <version>1.0.0</version>
     
     

    *groupId” 是一个组织或者项目(比如开源项目)的唯一ID。大多数情况下使用项目的java包的根名称作为group ID。该项目将会位于Maven仓库目录中com/jenkov中。
     *artifactId* 正在构建的项目的名称。artifact ID是Maven仓库中group ID目录下的子目录名。artifact ID也是构建完项目后生成的jar包的文件名的一部分。
     *versionId* 项目的版本号。 版本号是artifact ID目录下的子目录名。版本号也用作构建结果名称的一部分。jar包文件名的一部分

    上文中的groupId,artifactId和version属性,在项目构建后会生成一个jar文件,位于Maven仓库的如下路径中(目录和文件名):MAVEN_REPO/com/jenkov/java-web-crawler/1.0.0/java-web-crawler-1.0.0.jar

    Maven有两个配置文件。配置文件里的设置,对所有的pom文件都是有效的。比如,你可以配置:
    本地仓库的路径;当前的编译配置选项等等

    配置文件名为settings.xml,两个配置文件分别为:
    + Maven安装目录中:$M2_HOME/conf/settings.xml
     + 用户主目录中:${user.home}/.m2/settings.xml
     如果两个文件都存在,则用户目录下的配置会覆盖Maven安装目录中的配置。

    让Maven跑起来
     mvn install
     该命令执行`install`阶段(是默认构建阶段的一部分),编译项目,将打包的JAR文件复制到本地的Maven仓库。事实上,该命令在执行install之前,会执行在构建周期序列中位于install之前的所有阶段。

    执行多个构建周期或阶段,如:

    mvn clean install

    该命令首先执行clean构建周期,删除Maven输出目录中已编译的类文件,然后执行install构建阶段。

    也可以执行一个Maven目标(构建阶段的一部分),将构建阶段与目标名以冒号(:)相连,作为参数一起传给Maven命令。例如:

    mvn dependency:copy-dependencies

    该命令执行`dependency`构建阶段中的`copy-dependencies`目标。

    依赖几种方式: 

    1. Maven内嵌有依赖管理的功能。你只需要在pom文件里指定依赖jar包的名称、版本号,Maven会自动下载并放到你的Maven本地仓库中。如果这些外部jar包依赖了其它的库,它们也会被下载到你的Maven本地仓库。在pom文件的dependencies属性中指定项目依赖:

     <dependencies>
                <dependency>
                    <groupId>org.jsoup</groupId>
                    <artifactId>jsoup</artifactId>
                    <version>1.7.1</version>
                </dependency>
                
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.8.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
     

     如果本地仓库中已经有了这两个依赖,Maven就不会去下载了。只有本地仓库中没有的依赖才会被下载。
    2.指定的依赖在Maven的中央仓库里没有。你可以直接下载这些依赖,然后放到Maven的本地仓库。这些依赖必须放到与groupId、 artifactId和version匹配的子目录中。上面示例中的两个依赖将会被放到以下子目录中:
    MAVEN_REPOSITORY_ROOT/junit/junit/4.8.1
    MAVEN_REPOSITORY_ROOT/org/jsoup/jsoup/1.7.1
    3.外部依赖指的是不在Maven的仓库(包括本地仓库、中央仓库和远程仓库)中的依赖(jar包)。 

    <dependency>
      <groupId>mydependency</groupId>
      <artifactId>mydependency</artifactId>
      <scope>system</scope>
      <version>1.0</version>
      <systemPath>具体路径warWEB-INFlibmydependency.jar</systemPath>
    </dependency>  
     

    4.快照依赖指的是那些还在开发中的依赖(jar包)。与其经常地更新版本号来获取最新版本,不如你直接依赖项目的快照版本。快照版本的每一个build版本都会被下载到本地仓库,即使该快照版本已经在本地仓库了。
    (在pom文件的最开头(设置groupId和artifactId的地方),在版本号后追加-SNAPSHOT,则告诉Maven你的项目是一个快照版本。如:<version>1.0-SNAPSHOT</version> 应该是快照项目每次编译产生一个最新快照)
     在配置依赖时,在依赖项目的版本号后追加-SNAPSHOT表明依赖的是一个快照版本。

    Maven仓库设置:
    Maven根据顺序去仓库中搜索依赖。首先是本地仓库,然后是中央仓库,最后,如果pom文件中配置了远程仓库,则会去远程仓库中查找。

    本地仓库

    本地仓库就是开发者电脑上的一个目录。该仓库包含了Maven下载的所有依赖。一般来讲,一个本地仓库为多个不同的项目服务。因此,Maven只需下载一次,即使有多个项目都依赖它(如junit)。仓库默认在你本机的用户目录下。可以在配置文件
     (user-home/.m2/settings.xml)中修改本地仓库的路径:

    <settings>
        <localRepository>
            d:datajavaproductsmaven epository
        </localRepository>
    </settings>
     

    中央仓库

    Maven的中央仓库由Maven社区提供。默认情况下,所有不在本地仓库中的依赖都会去这个中央仓库查找。然后Maven会将这些依赖下载到你的本地仓库。访问中央仓库不需要做额外的配置。
     

    远程仓库

    远程仓库一般用于放置组织内部的项目,该项目由多个项目共享。远程仓库中的依赖也会被Maven下载到本地仓库中。可以在pom文件里配置远程仓库。

    <repositories>
       <repository>
           <id>jenkov.code</id>
           <url>http://maven.jenkov.com/maven2/lib</url>
       </repository>
    </repositories>
     
     
    Maven有三个内嵌的构建生命周期: 
     default生命期关注的是项目的编译和打包。clean生命期关注的是从输出目录中删掉临时文件,包括自动生成的源文件、编译后的类文件,之前版本的jar文件等。site生命期关注的是为项目生成文档。实际上,site可以使用文档为项目生成一个完整的网站。
     default生命期更多的关注于构建代码。由于你不能直接执行default生命期,你需要执行其中一个构建阶段或者构建目标。default生命期包含了相当多的构建阶段和目标,最常用的构建阶段有: 

    构建阶段 描述
    validate 验证项目的正确性,以及所有必需的信息都是否都存在。同时也会确认项目的依赖是否都下载完毕。
    compile 编译项目的源代码test 选择合适的单元测试框架,对编译后的源码执行测试;这些测试不需要代码被打包或者部署。
    package 将编译后的代码以可分配的形式打包,如Jar包。
    install 将项目打包后安装到本地仓库,可以作为其它项目的本地依赖。
    deploy 将最终的包复制到远程仓库,与其它开发者和项目共享。

    Archetype

    可以讲Archetype理解成Maven项目的模板,例如maven-archetype-quickstart就是最简单的Maven项目模板,只需提供基本的元素,如groupId,artifactId,version等,它就能生成项目的基本结构及POM文件。

    Maven Archetype Plugin

    使用Archetype的一般步骤

    • 命令——mvn archetype:generate
    • 输入命令后,Archetype插件会输出一个Archetype列表供用户选择;选择自己想要使用的Archetype,输入对应编号
    • 提示输入一些基本参数,如groupId,artifactId,version,package等
    • Archetype插件生成项目骨架

     常用Archetype

    maven-archetype-quickstart

    默认的Archetype,基本内容包括:

    • 一个包含junit依赖声明的pom.xml
    • src/main/java主代码目录及一个名为App的类
    • src/test/java测试代码目录及一个名为AppTest的测试用例

    maven-archetype-webapp

    一个最简单的Maven war项目模板,当需要快速创建一个Web应用的时候可以使用它。生成的项目内容包括:

    • 一个packaging为war且带有junit依赖声明的pom.xml
    • src/main/webapp/目录
    • src/main/webapp/index.jsp文件
    • src/main/webapp/WEB-INF/web.xml文件

    创建自己的Archetype

    Archetype Catalog

    Catalog用来指定maven-archetype-plugin读取archetype-catalog.xml文件的位置:

    • internal——maven-archetype-plugin内置的
    • local——本地的,位置为~/.m2/archetype-catalog.xml
    • remote——指向Maven中央仓库的Catalog
    • file://
    • http://
  • 相关阅读:
    JS BOM对象 History对象 Location对象
    JS 字符串对象 数组对象 函数对象 函数作用域
    JS 引入方式 基本数据类型 运算符 控制语句 循环 异常
    Pycharm Html CSS JS 快捷方式创建元素
    CSS 内外边距 float positio属性
    CSS 颜色 字体 背景 文本 边框 列表 display属性
    【Android】RxJava的使用(三)转换——map、flatMap
    【Android】RxJava的使用(二)Action
    【Android】RxJava的使用(一)基本用法
    【Android】Retrofit 2.0 的使用
  • 原文地址:https://www.cnblogs.com/straybirds/p/5109485.html
Copyright © 2011-2022 走看看