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://
  • 相关阅读:
    前端设计工具
    centos7管理用户权限
    搜索个人内容方法
    HDU-6668-Polynomial(数学)
    Gym-100923L-Por Costel and the Semipalindromes(进制转换,数学)
    Gym-100923I-Por Costel and the Pairs(数学,思维)
    Gym-100923A-Por Costel and Azerah(DP)
    CodeForces-585B(BFS)
    CodeForces-437C(贪心)
    CodeForces-449B(单源最短路,思维)
  • 原文地址:https://www.cnblogs.com/straybirds/p/5109485.html
Copyright © 2011-2022 走看看