Maven笔记1-Maven核心概念及代理配置

1. Maven定义

    Maven是一个项目管理工具,它包含了一个项目对象模型(POM)、一组标准集合、一个项目生命周期、一个依

    赖管理系统;以及用来运行定义在生命周期阶段中插件(plugin)的目标(goal)的逻辑;主要服务于基于Java平

    台的项目构建、依赖管理和项目信息管。

2. 基于项目定义的模型的特征

2.1  依赖管理
       由于项目是根据一个包含组标识符,构件标识符和版本号的唯一的坐标定义的。项目间可以使用这些坐标来声明

       依赖。
2.2 远程仓库
       和项目依赖相关的,我们可以使用定义在项目对象模型(POM)中的坐标来创建Maven 构件的仓库。
2.3 全局性构建逻辑重用
       插件被编写成和项目模型对象(POM)一起工作,它们没有被设计成操作某一个已知位置的特定文件。一切都

       被抽象到模型中,插件配置和自定义行为都在模型中进行。
2.4 工具可移植性/集成
      像 Eclipse,NetBeans,和 InteliJ 这样的工具现在有共同的地方来找到项目的信息。在 Maven 出现之前,

      每个 IDE 都有不同的方法来存储实际上是自定义项目对象模型(POM)的信息。Maven 标准化了这种描述,而

      虽 然每个 IDE 仍然继续维护它的自定义项目文件,但这些文件现在可以很容易的由模型生成。
2.5 便于搜索和过滤构件
      像 Nexus 这样的工具允许你使用存储在 POM 中的信息对仓库中的内容进行索引和搜索。

3. Maven与Ant的区别

    Ant(Another Neat Tool,另一个整洁的工具):基于任务和依赖的构建系统,是自定义的程序化构建,是过程式的。

    • Ant 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码,哪里放置输出。随

       着时间的推移,非正式的约定出现了,但是它们还没有在产品中模式化。

    • Ant 是程序化的,你必须明确的告诉 Ant 做什么,什么时候做。你必须告诉它去编译,然后复制,然后压缩。
    • Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。

 

    Maven: 采用了约定由于配置的(Convention over Configuration)的思想,是声明式的。

    • Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把字节码放到 target/classes ,然

       后在 target 生成一个 JAR 文件。
    • Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处

       理其它的事情。
    • Maven 有一个生命周期,当你运行 mvn install 的时被调用。这条命令告诉 Maven 执行一系列的有序的步骤,  

      直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目

      标完成了像编译和创建一个 JAR 文件这样的工作。

4. Maven核心概念

4.1 Maven的插件和目标(Plugins and Goals)

      以上述Quickstart Archetype为例,create为目标;一个Maven插件是一个单个或者多个目标的集合。

       一个目标是一个明确的任务,它可以作为单独的目标运行,或者作为一个大的构建的一部分和其它目标一起运行。

       一个目标是Maven中的一个“工作单元(unit of work)”。目标的例子包括Compiler插件中的compile目标,它

      用来编译项目中的所有源文件,或者Surefire插件中的test目标,用来运行单元测试。通过-D传入参数,如

      packageName参数,不穿该参数,将默认采用groupId作为包名。

4.2 Maven生命周期(Lifecycle)

      生命周期是包含在一个项目构建中的一系列有序的阶段。

      Maven可以支持许多不同的生命周期,但是最常用的生命周期是默认的Maven生命周期,这个生命周期中一开

      始的一个阶段是验证项目的基本完整性,最后的一个阶段是把一个项目发布成产品。 插件目标可以附着在生命周

      期阶段上。随着Maven沿着生命周期的阶段移动,它会执行附着在特定阶段上的目标。每个阶段可能绑定了零个

      或者多个目标。

      以运行mvn package命令为例,当Maven经过以package为结尾的默认生命周期的时候,下面的目标按顺序

      被执行:

     (1)resources:resources
      Resources插件的resources目标绑定到了resources 阶段。这个目标复制src/main/resources下的所有资

      源和其它任何配置的资源目录,到输出目录。
     (2)compiler:compile
      Compiler插件的compile目标绑定到了compile 阶段。这个目标编译src/main/java下的所有源代码和其他任

      何配置的资源目录,到输出目录。
     (3)resources:testResources
      Resources插件的testResources目标绑定到了test-resources 阶段。这个目标复制src/test/resources

      下的所有资源和其它任何的配置的测试资源目录,到测试输出目录。
     (4)compiler:testCompile
      Compiler插件的testCompile目标绑定到了test-compile 阶段。这个目标编译src/test/java下的测试用例和

      其它任何的配置的测试资源目录,到测试输出目录。
     (5)surefire:test
      Surefire插件的test目标绑定到了test 阶段。这个目标运行所有的测试并且创建那些捕捉详细测试结果的输出

      文件。默认情况下,如果有测试失败,这个目标会终止。

     (6)jar:jar
      Jar插件的jar目标绑定到了package 阶段。这个目标把输出目录打包成JAR文件。

4.3 Maven坐标(Coordinates)

      Maven项目坐标:groupId:artifactId:packaging:version:(classifie)

      classifie为可选的。

      项目唯一标识符:groupId:artifactId:version。

4.4 Maven仓库(Repositories))

      下载Maven核心插件和依赖的远程仓库地址:http://repo1.maven.org/maven2.

      Maven仓库存储构件的目录格式是:

      /<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>

4.5 Maven依赖管理((Dependency Management)

      Maven支持传递性依赖。

4.6 站点生成和报告(Site Generating and Reporting)

      命令:mvn site

5. Maven目录分析

    bin:包含mvn 运行的脚本;

    boot: mvn 的类加载器框架;

    conf: 用与定制mvn的行为,包含settings.xml文件;

    lib: 包含Maven运行时需要的Java类库。

6. 配置HTTP代理

    在settings.xml文件中,配置代理主机:192.168.1.106,端口:8888:

    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>192.168.1.106</host>
      <port>8888</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

    其中<active>为True指激活该代理,<nonProxyHosts>指不需要代理的网站。

你可能感兴趣的:(maven,ant,配置管理,项目管理,Netbeans)