`
ponlya
  • 浏览: 164620 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Maven 笔记二 摘录

 
阅读更多

很多笔记及实例摘录自《Maven权威指南》

依赖范围

compile(编译范围)
    compile是默认的范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。   
provided(已提供范围)
    已提供范围的依赖在编译classpath(不是运行时)可用。它们不是传递性的,也不会被打包。如servlet-api
runtime(运行时范围)
    runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。
test(测试范围)
    test范围依赖 在一般的 编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
system(系统范围)
    system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。注意该范围是不推荐使用的。如tools.jar

 

关于版本的定义
    主版本,次版本,增量版本,和限定版本号
    <major version>.<minor version>.<incremental version>-<qualifier>
    例如:版本“1.3.5”由一个主版本1,一个次版本3,和一个增量版本5。而一个版本“5”只有主版本5,没有次版本和增量版本。限定版本用来标识里程碑构建:alpha和beta发布,限定版本通过连字符与主版本,次版本或增量版本隔离。例如,版本“1.3-beta-01”有一个主版本1,次版本3,和一个限定版本“beta-01”。
    需要对版本号的限定版本进行排序。以版本号“1.2.3-alpha-2”和“1.2.3-alpha-10”为例,这里“alpha-2”对应了第二次alpha构建,而“alpha-10”对应了第十次alpha构建。后者比前者排序靠前,因排序按字符串排   
    SNAPSHOT    表示项目正处于活动的开发状态,快照版本。很不稳定,它随时可能变化。作为一个默认设置,Maven不会从远程仓库检查SNAPSHOT版本,要依赖于SNAPSHOT版本,用户必须在POM中使用repository和pluginRepository元素显式的开启下载snapshot的功能。
    LATEST是指某个特定构件最新的发布版或者快照版(snapshot),最近被部署到某个特定仓库的构件。
    RELEASE是指仓库中最后的一个非快照版本
   
Maven属性
    project.*
        可使用该project.*前缀来引用任何在MavenPOM中的值,如果在Maven中引用输出目录,应该使用属性来引用这些目录。
            • project.build.sourceDirectory
            • project.build.scriptSourceDirectory
            • project.build.testSourceDirectory
            • project.build.outputDirectory
            • project.build.testOutputDirectory
            • project.build.directory
            sourceDirectory,scriptSourceDirectory,和testSourceDirectory提供了项目源码目录的访问方式。
            outputDirectory和testOutputDirectory则能让你访问Maven放置字节码和其它构建输出的目录。
            directory引用的目录就是包含上述两个输出目录的父目录。
    settings.*
        Maven Settings。你使用该settings.*前缀来引用~/.m2/settings.xml文件中Maven Settings的值。如本地仓库的位置,以及由某个特定用户配置的服务器,profile,和镜像。
    env.*
        环境变量如PATH和M2_HOME可以使用env.*前缀来引用。
        env.PATH 包含了Maven运行的当前PATH。该PATH包含了一个用来查找可运行脚本和程序的 目录列表,
        env.HOME (在*nix系统中)这个变量指向了用户的home目录。但你更应该使用/home/ hudson,而非这个变量。
        env.JAVA_HOME 指向了Java安装目录。它要么指向JDK安装目录,要么或者JRE目录。但你更应该 考虑使用/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre而非这个属性。
        env.M2_HOME 指向了Maven2安装目录。
         
    系统属性
        任何可以通过System.getProperty()方法获取的属性都可以作为Maven属性被引用。
            java.version Java运行环境版本
            java.vendor Java运行环境供应商
            java.vendor.url Java供应商URL
            java.home Java安装目录
            java.vm.specification.version Java虚拟机规格说明版本
            java.vm.specification.vendor Java虚拟机规格说明供应商
            java.vm.specification.name Java虚拟机规格说明名称
            java.vm.version Java虚拟机实现版本
            java.vm.vendor Java虚拟机实现供应商
            java.vm.name Java虚拟机实现名称
            java.specification.version Java运行环境规格说明版本
            java.specification.vendor Java运行环境规格说明供应商
            java.specification.name Java运行环境规格说明名称
            java.class.version Java类格式版本号
            java.class.path Java类路径
            java.ext.dirs 扩展目录的路径
            os.name 操作系统名称
            os.arch 操作系统架构
            os.version 操作系统版本
            file.separator 文件分隔符(UNIX上是"/",Windows上是"\")
            path.separator 路径分隔符(UNIX上是":",Windows上是";")
            line.separator 行分隔符(在UNIX和Windows上都是"\n")
            user.name 用户帐户名称
            user.home 用户home目录
            user.dir 用户当前工作目录
    用户定义的属性
        <properties>
            <hibernate.version>4.1</hibernate.version>
        </properties>

 

        <build>
             <finalName>content-test</finalName>
        </build>

 

settings.xml

     文件可位于两个地方
    1.Maven安装目录: $M2_HOME/conf/settings.xml
    2.用户特定的Settings文件: ~/.m2/settings.xml
   
    settings.xml中顶层元素的概览
    <settings xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                              http://maven.apache.org/xsd/settings-1.0.0.xsd">
          <localRepository/>
          <interactiveMode/>
          <usePluginRegistry/>
          <offline/>
          <pluginGroups/>
          <servers/>
          <mirrors/>
          <proxies/>
          <profiles/>
          <activeProfiles/>
    </settings>
   
    localRepository
        该值表示构建系统本地仓库的路径。其默认值为~/.m2/repository 
    <offline>false</offline>
        构建系统需要在离线模式下运行,则为true,默认为false。
       
    settings.xml中的Server配置
    <servers>
        <server>
          <id>server001</id>
          <username>my_login</username>
          <password>my_password</password>
          <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
          <passphrase>some_passphrase</passphrase>
          <filePermissions>664</filePermissions>
          <directoryPermissions>775</directoryPermissions>
          <configuration></configuration>
        </server>
      </servers>

 

构建生命周期
    Maven中有三种标准的生命周期:清理(clean),默认(default)(有时候也称为构建),和站点(site)
    mvn clean将调用清理生命周期,它包含了三个生命周期阶段:
         pre-clean
         clean
         post-clean
        自定义Clean插件的行为    maven-clean-plugin
    默认生命周期 (default)     第一个阶段是validate,最后一个阶段是deploy
        validate                 验证项目是否正确,以及所有为了完整构建必要 的信息是否可用
        generate-sources        生成所有需要包含在编译过程中的源代码
        process-sources         处理源代码,比如过滤一些值
        generate-resources         生成所有需要包含在打包过程中的资源文件
        process-resources         复制并处理资源文件至目标目录,准备打包
        compile                 编译项目的源代码
        process-classes         后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)
        generate-test-sources     生成所有包含在测试编译过程中的测试源码
        process-test-sources     处理测试源码,比如过滤一些值
        generate-test-resources 生成测试需要的资源文件
        process-test-resources     复制并处理测试资源文件至测试目标目录
        test-compile             编译测试源码至测试目标目录
        test                    使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
        prepare-package         在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本
        package                 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR
        pre-integration-test     执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
        integration-test         如果有必要的话,处理包并发布至集成测试可以运行的环境
        post-integration-test     执行一些在集成测试运行之后需要的动作。如清理集成测试环境。
        verify                     执行所有检查,验证包是有效的,符合质量规范
        install                 安装包至本地仓库,以备本地的其它项目作为依赖使用
        deploy                     复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)
    站点生命周期 (site)
        项目文档和站点生成有一个专有的生命周期,它包含了四个阶段:
        1. pre-site
        2. site
        3. post-site
        4. site-deploy
        默认绑定到站点生命周期的目标是:
        1. site - site:site
        2. site-deploy -site:deploy
   
    JAR打包默认的目标
        process-resources resources:resources
        compile compiler:compile
        process-test-resources resources:testResources
        test-compile compiler:testCompile
        test surefire:test
        package jar:jar
        install install:install
        deploy deploy:deploy
   
    POM是最简单的打包类型  
        它生成的构件只是它本身。没有代码需要测试或者编译,也没有资源需要处理。
        package site:attach-descriptor
        install install:install
        deploy deploy:deploy
   
    EJB打包默认的目标
        process-resources resources:resources
        compile compiler:compile
        process-test-resources resources:testResources
        test-compile compiler:testCompile
        test surefire:test
        package ejb:ejb
        install install:install
        deploy deploy:deploy
       
    WAR打包默认的目标
        process-resources resources:resources
        compile compiler:compile
        process-test-resources resources:testResources
        test-compile compiler:testCompile
        test surefire:test
        package war:war
        install install:install
        deploy deploy:deploy
       
    大部分生命周期将resources:resources目标绑定到process-resources阶段。process-resources阶段处理资源并将资源复制到输出目录

 

Compile
    大部分生命周期将Compiler插件的compile目标绑定到compile阶段。
    compile:compile将会编译src/main/java中的所有内容至target/classes。
    Compiler插件调用javac,使用的source设置为1.3,默认target设置为1.1。

<plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
</plugins>

     覆盖默认的源码和输出目录

<build>
      <sourceDirectory>src/java</sourceDirectory>
      <outputDirectory>classes</outputDirectory>
</build>

     覆盖测试源码和输出的位置

<build>
      <testSourceDirectory>src-test</testSourceDirectory>
      <testOutputDirectory>classes-test</testOutputDirectory>
</build>

 

mvn install -Dmaven.test.skip=true

 

分享到:
评论

相关推荐

    黑马maven笔记第二天

    ### 黑马Maven笔记第二天知识点总结 #### Maven的核心优势 **1. 统一管理JAR包** - **节省空间**:Maven通过中央仓库管理所有项目的依赖,避免了重复下载相同JAR包的问题,有效减少了硬盘空间的占用。 - **依赖...

    maven学习笔记maven学习笔记

    maven学习笔记maven学习笔记maven学习笔记

    尚硅谷Maven课程笔记代码资源

    二、Maven仓库 Maven依赖管理的关键在于它的中央仓库,存储了大量的开源库,开发者无需手动下载即可直接引用。此外,还可以设置本地仓库和私有远程仓库,以满足特定项目的需求。Maven通过解析POM文件中的依赖声明,...

    黑马maven笔记,第一天

    ### 黑马Maven笔记详解 #### Maven简介与特点 Maven是一款强大的项目管理和构建工具,作为Apache基金会下的一个开源项目,它完全采用Java语言编写,主要用于管理Java项目。Maven通过标准化项目构建过程和依赖管理...

    Maven笔记.pdf

    ### Maven核心知识点解析 #### Maven概述与价值 Maven是一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过Maven,开发者可以轻松地处理项目中的多个痛点问题,提升开发效率。 #####...

    Maven笔记与资料.zip

    压缩包中的"笔记"和"资料"文件可能包含更深入的Maven教程、最佳实践、常见问题解答和案例研究等内容。学习这些资料有助于提升你在实际项目中的Maven应用能力,解决遇到的问题,并优化构建流程。 综上所述,Maven是...

    Maven笔记Maven笔记Maven笔记

    Maven的安装: (首先保证JDK版本在1.6以上) 1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2...

    maven笔记:maven-overlay-实战笔记

    【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...

    maven笔记+教案

    ** Maven详解:构建Java项目的专业工具 ** Maven是一个基于项目对象模型(Project Object Model,POM)的概念,用于管理并构建Java项目。它通过一个简单的配置文件(pom.xml),自动化项目的构建、报告和依赖管理,...

    Maven 教程:基础篇-尚硅谷学习笔记 2022年

    **Maven教程:基础篇——尚硅谷学习笔记 2022年** Maven是一个强大的Java项目管理和构建工具,由Apache软件基金会开发。它通过提供一个标准的项目对象模型(Project Object Model,POM)来简化项目的构建过程,并...

    最新maven视频教程加源码笔记

    最新maven视频教程加源码笔记,内容完整有保证,是学习maven的不可多得的教程。

    maven笔记t-JavaWeb

    【标题】"maven笔记t-JavaWeb"主要聚焦于Java Web开发中Maven的使用,这是一套关于Maven的教程,旨在帮助开发者理解和掌握这个强大的构建工具。Maven是Apache软件基金会的一个项目,它简化了Java项目的构建、管理和...

    maven笔记.docx

    【Maven笔记】 Maven是一个强大的Java项目管理工具,它主要解决了在软件开发过程中遇到的一系列问题,如依赖管理、项目构建以及环境一致性等。通过使用Maven,开发者可以更高效地管理和构建Java项目,避免手动复制...

    maven笔记.zip

    ** Maven 概述 ** Maven 是一个强大的项目管理和构建工具,主要应用于Java项目。它通过提供一套标准化的构建过程,使得项目的...通过学习Maven笔记,开发者可以更好地掌握这一强大的工具,提升项目开发的专业水平。

    Maven开发者笔记

    《Maven开发者笔记》是一本面向Java开发者的实用指南,旨在帮助读者深入理解和掌握Maven这一强大的构建工具。Maven不仅简化了项目的构建过程,还提供了项目管理的标准化方法,使得依赖管理和构建流程变得规范而高效...

    java-Maven笔记.docx

    Maven 是 Java 项目中一种流行的构建工具,能够帮助开发者更好地管理项目依赖关系、编译、打包和发布。下面是 Maven 的一些知识点: 1. Maven 的必要性:Maven 之所以需要,是因为在没有 Maven 之前,开发者需要...

    Maven笔记.docx

    **Maven笔记** Maven是Apache组织开发的一款Java项目管理工具,它的主要功能包括项目构建、依赖管理和仓库管理。Maven使得Java开发更加规范和高效,尤其在大型团队协作中,能够有效地解决版本冲突和自动化构建的...

    Maven高级-黑马程序员学习笔记

    ### 二、继承与聚合 **继承(Inheritance)**: Maven的继承机制允许子POM从父POM中继承属性,如依赖、插件、构建配置等。这样可以避免重复定义,保持配置的一致性。 1. **定义父POM**:在父POM中,通过`...

Global site tag (gtag.js) - Google Analytics