zoukankan      html  css  js  c++  java
  • Maven初识

    定义

    Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), 
    Maven can manage a project's build, reporting and documentation from a central piece of information. => Maven是一个软件项目管理和综合的工具,基于POM,从一块中心信息管理项目的构建,报告,以及文档。

    目标

    那么,大神们创造Maven的目的是什么呢?

    1. 1Making the build process easy 使工程build更容易
    2. Providing a uniform build system 提供一个统一的build系统
    3. Providing quality project information 提供高效的项目信息
    4. Providing guidelines for best practices development 为最好的开发实践提供准则
    5. Allowing transparent migration to new features 提供向新特性透明迁移

    安装方法
    1. 设置Java环境,包括JAVA_HOME参数
    2. 解压maven安装包,并将根目录设置到path


    Maven本身的配置
    1. MAVEN_OPTS environment variable:用于更改Maven默认启动参数,比如占用内存范围 -Xms256m -Xmx512m
    2. settings.xml file: 位于USER_HOME/.m2,为全局配置
    3. .mvn folder:位于具体project根目录,包括maven.config and extensions.xml

    有关setting的详细说明,请参考: https://maven.apache.org/settings.html


    运行

    mvn [options] [<goal(s)>] [<phase(s)>]

     整体顺序如下:

    1. clean - pre-clean, clean, post-clean
    2. default - validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy
    3. site - pre-site, site, post-site, site-deploy

    除了mvn package,mvn validate也是比较重要的


    常识概念

    1. 什么是SNAPSHOT version?

    是开发中的版本,发布为release版本时,会去除SNAPSHOT字样


     依赖 - dependency

    Dependency Scope

    1. compile: 默认范围,编译时可用,包含的所有class path可在编码时使用.
    2. provided:跟compile相似,不同的是只在编译,测试时使用,实际上,jdk或者将要发布的容器环境中已经存在,所以打包时不会包含
    3. runtime: 运行时使用,编译时并不检查
    4. test: 测试时使用
    5. system:跟provided类似,jar包环境中存在,不同的是需要明确指定位置
    6. import (2.0.9之后引入):用于dependencyManagement节点,一般用于版本集中管理, 这个方案可以解决parent依赖只能有一个的问题

    传递依赖: 可向被依赖主体传递(transitivity)的包括compile,runtime

    type: 依赖的type属性默认为jar,也可以为war,pom等。可以通过插件来自定义工程生成的依赖类型

    classifier:用于一个pom根据不同目的生成不同的包,比如支持的jdk版本不同。还有就是可以帮助生成附属产物,比如javadoc,source等

    完整信息请参考:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

    有关pom的完整说明,请参考:https://maven.apache.org/pom.html


    dependencyManagement节点

    一般用于项目的parent中,主要用于版本。

    当然,dependencyManagement里包含的dependency仍然需要在子项目的依赖中明确写上,只是不用写上版本号而已。


    插件 - Plugin

    举例如下,使用jdk1.5来编译工程

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.3</version>
          <configuration>  --- 插件参数配置
            <source>1.5</source>
            <target>1.5</target>
          </configuration>
        </plugin>
      </plugins>
    </build>

    具体配置插件方法请参考:https://maven.apache.org/guides/mini/guide-configuring-plugins.html


     依赖包找不到的一般原因&解决途径

    1. Maven默认repository在:https://repo.maven.apache.org/maven2
    2. 如果默认repository没有,就需要添加repository,或者手动下载安装(特别是对于老版本jar)
    3. 手动安装方法:
    mvn install:install-file -DgroupId=jnuit -DartifactId=junit -Dversion=3.8.1 -Dpackaging=jar -Dfile=/path/to/file

    然后,要在pom依赖里加入该jar包属性:

    <scope>system</scope>
    <systemPath>${project.basedir}/lib/my-jar.jar</systemPath>

    高阶:如何搭建Repository Manager

    用处:https://maven.apache.org/repository-management.html

    方法:搜集资料中


     高阶:如何发布到自定义的的repository

    pom中添加

      <distributionManagement>
        <repository>
          <id>mycompany-repository</id>
          <name>MyCompany Repository</name>
          <url>scp://repository.mycompany.com/repository/maven2</url>
        </repository>
      </distributionManagement>

    setting.xml中添加认证信息

      <servers>
        <server>
          <id>mycompany-repository</id>
          <username>jvanzyl</username>
          <!-- Default value is ~/.ssh/id_dsa -->
          <privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa)
          <passphrase>my_key_passphrase</passphrase>
        </server>
      </servers>


    另外,有以下几点需要知道:
    1. Maven是基于Java的,所有Java环境变量配置是必须的

    参考:http://maven.apache.org/index.html

    未完待续...

    ---栖息之鹰(一个外表懒洋洋的内心有激情的程序员) 此博客为笔者原著,转载时请注明出处,谢谢!
  • 相关阅读:
    ArcGIS超级工具SPTOOLS-制图篇
    ArcGIS超级工具SPTOOLS-MXD操作篇
    ArcGIS超级工具SPTOOLS-影像的批量裁剪和批量合并
    Get Raster Properties获得栅格的信息
    ArcGIS超级工具SPTOOLS-按属性裁剪,矢量数据批量裁剪,矢量数据批量合库
    ArcGIS超级工具SPTOOLS-SHP转数据库,批量数据库转数据库,栅格彩色转黑白
    ArcGIS超级工具SPTOOLS-锐角检查,获得内角并判断是否凸多边形,获得线(面)两个折点方向
    ArcGIS超级工具SPTOOLS-线封闭,点集转面
    ArcGIS超级工具-征地部标准坐标导出导入 SPTOOLS
    arcgis的arcpy写入几何怎么创建一个空心面要素并读取几何和属性信息,根本不够管
  • 原文地址:https://www.cnblogs.com/roostinghawk/p/7965411.html
Copyright © 2011-2022 走看看