maven

初识Maven

maven 现在还算是比较火的构建工具了,虽然这两年有点被Gradle夺取的势头,但是现在很多公司主流还是maven。自己所在公司的项目也是用maven构建的,之前没有去详细的了解它,今天咱就来聊聊曾经辉煌的Maven。
先说说构建吧,之前确实不知道,乘机扫了下盲,构建工具,就是把源代码生成可执行应用程序的过程自动化的程序,简单点就是通过执行一段程序,可以一键完成代码的clean、编译、部署等一系列操作。极大的增加了开发的效率。比如后端的Ant、Maven、Gradle都是开发java比较常见的构建工具,前端就接触得比较少了,知道Gulp、Grunt。
贴一段百度的说明吧,还是比较详细的:‘Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件’,项目对象模型,其实就是项目里的pom.xml文件,提供项目的定义信息和管理jar包,项目生命周期就是项目源代码到可执行程序的所经历的各个阶段,比如:clean,编译,打包,部署等;依赖管理系统就是pom文件里描述的依赖关系。
Maven相比Ant,官网说Maven extends Ant,Ant没有明确的约定项目目录结构,必须通过build.xml的文件指定源代码,编译输出位置等;没有生命周期,你必须先告诉Ant先编译,然后去复制,去打包,他不会自动去运行。而maven做到了,Maven约定了,源代码必须放到指定的路径,源代码必须放src,配置文件放resources,定义pom.xml描述项目信息,编译之后的字节码放target文件夹。maven有生命周期的概念,比如当运行mvn install命令时,其实是自动运行了一系列的有序的操作命令集合。

使用Maven:
  1. 提前安装jdk,官网下载maven;
  2. 解压zip包,复制路径,配置环境变量MAVEN_HOME和path
  3. 运行mvn -version出现版本信息则表示配置成功

修改maven setting配置文件:
由于身在天朝,为了加速下载所需jar包,需要修改默认的maven直接从中央仓库下载jar的配置为国内速度比较快的镜像库,比如阿里。自己公司内部用的话,可以在内网搭建私服,速度杠杠的,关键是既方便又安全,还能自己维护。贴一个知乎上的dalao镜像配置:

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
  </mirror>
  <mirror>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <url>http://repo1.maven.org/maven2/</url>
      <mirrorOf>central</mirrorOf>
  </mirror>
  <mirror>
      <id>repo2</id>
      <mirrorOf>central</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://repo2.maven.org/maven2/</url>
  </mirror>
  <mirror>
      <id>ibiblio</id>
      <mirrorOf>central</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
  </mirror>
  <mirror>
      <id>jboss-public-repository-group</id>
      <mirrorOf>central</mirrorOf>
      <name>JBoss Public Repository Group</name>
      <url>http://repository.jboss.org/nexus/content/groups/public</url>
  </mirror>
  <!-- 中央仓库在中国的镜像 -->
  <mirror>
      <id>maven.net.cn</id>
      <name>oneof the central mirrors in china</name>
      <url>http://maven.net.cn/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
  </mirror>
</mirrors> 

创建工程:
打开cmd,运行命令mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.yourcompany.yourappname -DartifactId=yourappname 创建maven项目,如果配置了上面的镜像,速度应该会很快,创建好了之后,cd刚才创建的项目目录下,运行mvn compile命令编译整个项目,就可以看到项目主目录下生成了一个target文件夹存放编译了之后的字节码文件,mvn test编译并运行test,然后执行main方法mvn exec:java -Dexec.mainClass="com.yourcompany.yourappname",可以看到Hello World!

ide中使用maven:

  1. eclipse中使用maven:
    由于没装eclipse就不贴图了,打开Windows->Prefrences->maven->Installations->add选择maven安装目录,点击下方的Browsea按钮,设置setting配置文件,点击ok保存。创建maven项目,右键项目名称->Run As->Maven xx命令
  2. idea中使用Maven:
    由于安装了idea就不打字了!
    maven-setting
    maven-cmd

dependencies与dependencyManagement的区别:

  1. dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
  2. dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

有时间再写写maven不同环境打包,配置nexus镜像仓库,配置自动构建工具jekins!逃…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值