首页 > 代码库 > 从零开始学OpenDaylight之四:Maven工具

从零开始学OpenDaylight之四:Maven工具

 一、写在前面

  小公司启动开发新项目的做法:项目经理从团队抽调1名开发人员进行项目工程框架的搭建,剩余的开发人员先研究项目需求,并着手准备业务逻辑的设计。本地项目工程搭建后,上传SVN或git配置库,告知其他开发人员可以下载项目工程,启动开发了。开发人员将项目工程导入到IDE(Eclipse)中,进行代码的编写、编译、测试以及打包等操作,本地代码确认无误后,上传配置库。

       从公司的现实考量,做好一个项目的时间越短,带来的市场空间和效益就有优势。这就要求除业务逻辑翻译的代码必须人工来做外(这里也有部分代码生成工具参与),没有技术含量并且重复的工作能自动化最好就自动化。从启动开发新项目的过程可以看出,诸如编译、单元测试、打包和部署等称为“Build-构建”的工作,最好能做到全自动流水线一样,只需要一条简单的命令就可以自动完成,这样可以大大节省时间。

       于是,需要有人使用软件的方法来让这一系列动作自动化。早期的构建管理的解决方法有:

        (1). Make; 

        (2). Ant(Another Neat Tool):另一个整洁的工具;

       目前,使用较多的是Maven、Gradle,本文重点介绍Maven。

二、Maven基础

1. 什么是Maven?

    译为“专家”,Maven是一个跨平台的项目管理工具,它可以帮助开发者完成以下工作: 构建、依赖、发布 、分发 以及测试报告等等; 

    技术分享

2. Maven核心概念     

    坐标、 依赖、 仓库、 生命周期和插件; 

   (1). 坐标:

    类比卫星通信进行定位一样,Maven中标识一个文件,使用

      groupId: com.mycompany

      artifactId:  hello

      version  3.0-SNAPSHOT

   (2). 仓库:

       Maven通过仓库来统一管理文件,同时,为了实现重用,项目构建后生成的构件也安装或部署到仓库中。涉及如下几个概念:

技术分享

       A. 本地仓库:一般来说,在Maven项目目录下,没有诸如lib这样用来存放依赖文件的目录。当Maven在执行编译或测试时,如果需要依赖文件,它总是基于坐标使用本地仓库的依赖文件。通过setting.xml文件标识:           

<localRepository>D:/repository/</localRepository>

 

      B. 远程仓库:将本地仓库类比为书房,远程仓库可理解为书店;

      C. 中央仓库:是一个默认的远程仓库;包含了大部分的开源JAVA构件以及源码等信息。

      D. 私服:是一种特殊的远程仓库,架设在公司内部。当下载构件时,从私服下载,如果私服不存在,则私服请求提供服务。          

   OpenDayLight私服: https://nexus.opendaylight.org/#nexus-search;quick~opendaylight-startup-archetype

    技术分享

  (3). 生命周期:

        开发人员每天的工作就是对项目进行清理、编译、测试及部署。不同的公司以及同一公司内部不同项目间,使用的构建方式可能并不相同,有的是手工,有的自动化,有的半手工半自动化,即使全是自动化,使用的脚本也不相同,不具有普适性。Maven的生命周期就是为了对所有的构建过程进行抽象和统一,它包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。

    技术分享

    mvn clean: 执行clean生命周期pre-clean和clean阶段;

    mvn clean install: 执行clean生命周期pre-clean和clean阶段,default生命周期的validate~install 所有阶段;  

    说明:

mvn clean install -Dmaven.test.skip=true; 中的-D使用了JAVA表示方式,-D set a system property(设置系统属性) 

 

 (4). 插件:

       插件完成具体的任务,与Maven的生命周期相互绑定。

       maven-surefire-plugin: 测试插件

       如何跳过?

       A. -DskipTest

       B.-Dmaven.test.skip=true

       测试失败后,不退出:-Dmaven.test.failure.ignore=true

三、Archetype

      主要目的是:快速创建项目,并遵循一致的项目结构和配置约定。

      官方地址:http://maven.apache.org/archetype/maven-archetype-plugin/index.html

      OpenDaylight相关的项目,使用的是opendaylight-startup-archetype

mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeVersion=1.3.0-Carbon

 说明:本文部分信息来自互联网资料整理

从零开始学OpenDaylight之四:Maven工具