zoukankan      html  css  js  c++  java
  • Maven学习笔记

    中文翻译:知识的积累,apache开源项目,跨平台的项目管理。

    Maven的主要的用途就是帮助构建项目

    Maven抽象了一个完整的构建生命周期模型,这个模型吸取了大量其他的构建脚本和构建工具的优点,总结了大量项目的实际的需求。可以避免不必要的错误,可以直接使用大量成熟的maven插件来外城我们的任务;

    Maven的另外一个优点:帮助我们标准的构建过程;在maven之前,是个项目可能有十种构建的方式,有了maven之后所有的项目的构建命令都是简单一致的,这极大地避免了不必要的学习成本,而且有利于促进团队的标准化;

    通过Jruby和Jython,我们可以在Java平台上编写和运行Ruby和Python程序;我们也应该认识到maven不仅是构建工具还是一个依赖管理工具和项目信息管理工具;它提供中央仓库,能帮助我们自动下载构件;

    通常:版本不一致,版本冲突,依赖管理等问题都会接踵而来,手工解决这些问题时十分枯燥的,幸运的是maven提供了一个优秀的解决方案,他通过一个坐标系统准确的定位每一个构件,也就是通过一组坐标maven能够找到任何一个Java类库;

    Nexus是maven的衍生工具;

    使用maven就像是购买品牌PC,不同的是maven是开源的,你无需为此付费;

    Make也许是最早的构建工具,是由一个名为Makefile的脚本文件驱动,该文件的使用make自己定义的语法格式,其基本组成部分为一系列规则,而每一条的规则又包括Target

    (目标),依赖,命令;无法做到跨平台

    Ant:another neat tool 另外一个整洁的工具,最早用来构建tomcat,可以跨平台;

    Ant 有一个构建脚本的,基本的结构也是target和依赖;

    Maven是用来管理项目的:清理,编译,测试,打包,发布;

    本地仓库:maven缺省的本地仓库地址为${user.home}/.m2/repository 。也就是说,一个用户会对应的拥有一个本地仓库,还有一点需要理解的是,当我们运行install的时候,Maven实际上是将项目生成的构件安装到了本地仓库,也就是说,只有install了之后,其它项目才能使用此项目生成的构件。

    中央仓库:接着了解一下Maven缺省的远程仓库,即Maven中央仓库

    这个Maven中央仓库是在哪里定义的呢?在我的机器上,我安装了maven-2.0.10,我可以找到这个文件:${M2_HOME}/lib/maven-2.0.10-uber.jar ,打开该文件,能找到超级POM:orgapachemavenprojectpom-4.0.0.xml ,它是所有Maven POM的父POM,所有Maven项目继承该配置,你可以在这个POM中发现如下配置:

    < repositories >  

       < repository >  

         < id >central</ id >  

         < name >Maven Repository Switchboard</ name >  

         < layout >default</ layout >  

         < url >http://repo1.maven.org/maven2</ url >  

         < snapshots >  

           < enabled >false</ enabled >  

         </ snapshots >  

       </ repository >  

    </ repositories >

    关于远程仓库的配置,下面的小节我会详细解释,这里我们只要知道,中央仓库的id为central,远程url地址为http://repo1.maven.org/maven2,它关闭了snapshot版本构件下载的支持。

    前面我们看到超级POM配置了ID为central的远程仓库

    如果你的地理位置附近有一个速度更快的central镜像,或者你想覆盖central仓库配置,或者你想为所有POM使用唯一的一个远程仓库(这个远程仓库代理的所有必要的其它仓库),你可以使用settings.xml中的mirror配置。

    以下的mirror配置用maven.net.cn覆盖了Maven自带的central:

    < settings >  

    ...  

       < mirrors >  

         < mirror >  

           < id >my-org-repo</ id >  

           < name >Repository in My Orgnization</ name >  

           < url >http://192.168.1.100/maven2</ url >  

           < mirrorOf >*</ mirrorOf >  

         </ mirror >  

       </ mirrors >  

    ...  

    </ settings >

    mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库。本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。

    在安装maven之前,首先要确认已经正常安装了jdk,maven可以运行在jdk1.4及以上的版本;

    设置http代理:有时候你所在的公司基于安全因素的考虑,妖气使用通过安全认证的代理访问因特网,这种情况下就需要使用到http代理才能 外部的中央仓库了;

    首先确认自己无法直接访问公共的maven中央仓库,直接运行命令ping repol.maven.org可以直接检查网络。

    重要的:maven scm:svn是非常流行的版本管理工具,该模块能帮助我们直接重svn服务器签出maven项目,不过需要安装svn

    Maven安装的最佳实践:

    设置maven_opts环境变量:

    运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数档案也应该在运行mvn命令时可用,这个使用maven_opts环境变量就能排上用场了;

    配置用户范围的settings.xml文件(推荐)有利于maven的升级

    在eclipse环境中,单击windows preferences maven installation子项目右边add

    Maven使用入门:maven的核心是pom.xml文件,Pom(project object model)项目对象模型定义了项目的基本信息,用于描述项目如何构建,申明项目以来等等;

    Pom.xml文件中最重要的是包含groupid,artifactid,version的三行,这三个元素定义了一个项目的基本的坐标,在maven的世界里面,任何热jar,pom或者war都是以基于这些基本的坐标进行区分的,groupid是定义项目属于哪个组的,

    Artifactid定义了 当前maven项目在组中的唯一的Id

    项目中的住代码是会被打包最终构件重如jar文件,测试代码只是运行测试时才会有道,不会被打包;

    Clean会告诉maven输出目录target(从输出中看到maven首先执行了clean

    杀出了target目录,默认的情况下,maven构建的搜游的输出都在target目录中),compile告诉maven笔记项目的主要代码

    上述的pom文件中海油一个值为test的元素scope,scope为依赖范围,若是依赖范围为test的话则表示该依赖支队测试有效;换句话说测试代码中的import Junit代码是没有问题的,但是如果在住代码中庸import Junit代码,就会造成编译错误。如果不申明依赖的范围,那么默认值就是compile,表示该依赖对住代码和测试代码都有效;

    认真生活每一天~
  • 相关阅读:
    OSG-提示“error reading file e:1.jpg file not handled”
    OSG-加载地球文件报0x00000005错误,提示error reading file simple.earth file not handled
    QT-找开工程后,最上方提示the code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.
    我的书《Unity3D动作游戏开发实战》出版了
    java中无符号类型的第三方库jOOU
    Windows批处理备份mysql数据
    使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to x.x.A
    Java版本,Java版本MongoDB驱动,驱动与MongoDB数据库,Spring之间的兼容性
    Jrebel本地激活方法
    wget下载指定网站目录下的所有内容
  • 原文地址:https://www.cnblogs.com/xu-xiang/p/5402657.html
Copyright © 2011-2022 走看看