`
ponlya
  • 浏览: 167641 次
  • 性别: 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

 

分享到:
评论

相关推荐

    interview:Java 面试知识点及总结

    其中包含对以下书籍的知识点摘录:、部分内容由于备战校招期间太忙,没记录笔记子项目内容algorithm 算法练习concurrent 并发笔记design 设计模式笔记experience 收集的常见面试问题http http笔记jvm jvm笔记lambda ...

    高级java笔试题-MyRecord:平时充电做的笔记,一个程序猿的自我修养

    就是笔记啊,一般是书中或者好的博文里的摘录,稍微整理了一下这样子 :high_voltage: 有用的图片,比如流程图,自己看书当笔记画的“思维导图” 主要笔记一览: . ├── FixException │  ├── Eclipse使用...

    <<你必须知道的261个Java语言问题>>电子书(图片版)、部分源码及勘误

    `notes.doc`可能包含了读者在阅读过程中所做的笔记、书中的重点摘录或是作者提供的额外解释和补充材料。这样的文档对于复习和理解书中的知识点非常有帮助,它可能涵盖了诸如类与对象、封装、继承、多态等核心概念,...

    Qt 采用http通信json解析读取天气

    Qt 采用http通信json解析读取天气

    岗位晋升360度调查表.doc

    岗位晋升360度调查表.doc

    合法辞退员工的N种方式.pptx

    合法辞退员工的N种方式.pptx

    大模型、Agent、具身智能及人形机器人学习全路径规划.pdf

    大模型、Agent、具身智能及人形机器人学习全路径规划.pdf

    华润万家员工手册.doc

    华润万家员工手册.doc

    招聘需求分析.xls

    招聘需求分析.xls

    光伏+蓄电池系统中双有源桥DC-DC变换器的Matlab仿真与MPPT及闭环控制实现

    内容概要:本文详细介绍了基于‘光伏(PV)+蓄电池+负载’架构的双有源桥DC-DC变换器仿真方法及其在Matlab 2021b中的具体实现。首先解析了光伏系统的MPPT控制,通过扰动观察法使光伏板始终处于最大功率点。接着讨论了蓄电池的恒流充放电控制,利用PI控制器确保电池的安全和高效运作。然后阐述了双有源桥DC-DC变换器的闭环控制机制,借助PID控制器维持系统输出电压的稳定性。最后,文章展示了如何在Matlab Simulink环境下构建完整的仿真模型,涵盖各模块间的电气连接与信号交互,为新能源系统的优化提供了理论和技术支持。 适合人群:从事电力电子、新能源系统设计的研究人员和工程师,尤其是那些需要深入了解光伏储能系统工作原理的人群。 使用场景及目标:适用于希望掌握光伏储能系统中关键组件如MPPT、恒流充放电控制及双有源桥DC-DC变换器的设计与仿真的技术人员。目标是在实际工程项目中提高系统的效率和可靠性。 其他说明:文中提供的代码片段和建模思路有助于读者更好地理解和实践相关技术,同时也强调了一些常见的陷阱和调试技巧,帮助避免潜在的问题。

    数学建模_Matlab_SPSS_教程分享_学习用途_1742838826.zip

    线性代数

    电机调速技术解析:直流电机双闭环与多种电机滞环调速方法对比

    内容概要:本文详细介绍了不同类型电机的调速方法,重点探讨了直流电机双闭环调速、永磁同步电机电流滞环闭环调速以及异步电机滞环电流调速。文中不仅提供了每种调速方法的基本原理和技术特点,还附带了相应的代码示例进行辅助解释。此外,文章对永磁同步电机的电流滞环调速与SVPWM调速进行了对比,指出了各自的优劣之处。最后,强调了在实际应用中选择合适调速方案的重要性。 适合人群:从事电机控制系统设计与开发的技术人员,尤其是有一定电机控制基础的研发人员。 使用场景及目标:适用于需要深入了解电机调速机制及其应用场景的专业人士。目标是帮助读者掌握不同电机调速方法的特点,以便在实际工程中做出最优选择。 其他说明:文章通过具体的代码实例展示了调速方法的实际应用,使读者能够更好地理解和实践相关技术。同时提醒读者在实际调试过程中要注意参数设置和硬件条件的影响。

    人员晋升推荐表.xls

    人员晋升推荐表.xls

    员工生日关怀方案.doc

    员工生日关怀方案

    模拟IC设计:解析国际知名大厂的SAR、Sigma-Delta和Pipeline ADC逆向工程

    内容概要:本文详细介绍了对国际知名大厂的三个逆向ADC电路(SAR ADC、Sigma-Delta ADC和Pipeline ADC)进行深入剖析。作者通过Cadence Virtuoso平台研究了这些电路的标准单元库设计,探讨了各个电路的关键技术和实现细节。对于24bit Sigma-Delta ADC,重点讨论了其调制器部分的时钟相位分配和噪声整形技术;对于16bit SAR ADC,则关注其比较器阵列的独特设计以及动态锁存比较器的应用;而对于14bit Pipeline ADC,着重分析了其级间放大器设计和电荷共享技术。此外,文中还提到了在将这些设计适配到自家工艺过程中遇到的问题及其解决方案,如电容寄生效应、时序约束调整、运放结构优化等。 适合人群:从事模拟集成电路设计的专业人士,尤其是对ADC设计感兴趣的工程师和技术研究人员。 使用场景及目标:帮助读者深入了解高精度ADC的工作原理和设计技巧,掌握逆向工程技术在实际项目中的应用,提高对不同工艺节点下ADC设计的理解和适应能力。 其他说明:文中提供了大量具体的代码片段和仿真命令,便于读者理解和实践。同时,作者分享了许多宝贵的经验教训,强调了在逆向工程中需要注意的技术细节和潜在风险。

    大型立体仓库智能物流系统的PLC控制与优化设计

    内容概要:本文详细介绍了大型立体仓库智能物流系统的构建与优化。该项目涉及一万多个库位、一百多台输送机和八台堆垛机,采用了西门子PLC作为控制核心,通过无线网桥与WCS和WMS系统对接。文章重点讲解了梯形图编程和功能块的应用,如输送机启停控制、堆垛机移动控制、路径规划、无线通讯处理以及异常处理机制。此外,还探讨了设备协同、逻辑优化、任务分配算法和速度曲线规划等方面的技术细节。 适合人群:从事工业自动化、智能仓储系统设计与开发的工程师和技术爱好者。 使用场景及目标:适用于智能仓储系统的设计、实施和维护,旨在提高系统的稳定性、效率和可维护性。 其他说明:文中提供了大量实际项目中的代码示例和调试经验,有助于读者理解和应用相关技术。

    新员工月工作总结表.xlsx

    新员工月工作总结表.xlsx

    西门子PLC汽车电子零件装配线SCL语言模块化编程与集成解决方案

    内容概要:本文详细介绍了基于西门子S7-1500 PLC的汽车电子零件装配线集成解决方案。主要内容涵盖伺服轴控制、阿特拉斯拧紧枪控制、康耐视视觉检测系统以及HMI界面的设计与实现。文中展示了如何利用SCL语言将多种工业设备(如HMI、伺服电机、六轴机器人等)的功能封装为标准化功能块,从而提高系统的模块化程度和可复用性。同时,还分享了一些实际项目中的调试经验和优化技巧,如通过调整加减速曲线避免机械振动、设置扭矩保持时间和视觉检测的防抖定时器等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是熟悉PLC编程和工业自动化设备集成的专业人士。 使用场景及目标:适用于汽车制造行业的生产线控制系统设计与实施。主要目标是帮助工程师快速掌握如何使用SCL语言构建高效稳定的PLC控制系统,提升生产效率和产品质量。 其他说明:文中不仅提供了详细的代码示例,还结合具体的应用场景进行了深入剖析,有助于读者更好地理解和应用相关技术。此外,强调了模块化编程的优势,如减少重复劳动、便于维护升级等。

    嵌入式系统中基于STM32/AT32/GD32的串口IAP Bootloader实现与远程升级方案

    内容概要:本文详细介绍了如何在STM32、AT32和GD32等Cortex-M系列MCU上实现串口IAP(In Application Programming)Bootloader,支持远程升级及RS485升级。主要内容涵盖Bootloader的工作原理、内存分配、通信协议设计、Flash写入操作以及跳转应用程序的关键步骤。文中提供了具体的代码示例,如Bootloader主循环、RS485收发控制、Flash写入、CRC校验等,并分享了多个实战经验和注意事项,确保数据传输的可靠性。 适合人群:从事嵌入式系统开发的技术人员,尤其是对STM32、AT32、GD32等国产MCU有一定了解并希望掌握串口IAP技术的研发人员。 使用场景及目标:适用于需要远程升级固件的嵌入式项目,帮助开发者避免现场升级带来的不便,提高设备维护效率。目标是让读者能够独立实现一个可靠的串口IAP Bootloader,掌握RS485通信和Flash编程的关键技术。 其他说明:文中提到的代码和配置已在GitHub上提供,方便读者下载和实践。同时,作者分享了许多实战经验和常见问题解决方案,有助于减少开发过程中可能出现的问题。

    线性代数_矩阵运算_方程组解释_MIT公开课笔记用途_1742822302.zip

    线性代数

Global site tag (gtag.js) - Google Analytics