• 从零开始学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

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

  • 相关阅读:
    Ninject依赖注入——构造函数、属性、方法和字段的注入
    轻量级IOC框架:Ninject
    WCF 服务端异常封装
    Tomcat远程调试和加入JMS(转)
    关于与产品相关的品牌、国藉等与产品质量的一些思考(转)
    eclipse及Java常用问题及解决办法汇总
    SourceInsight
    java.util.Timer分析源码了解原理
    WebSocket初探
    JAVA布局管理器
  • 原文地址:https://www.cnblogs.com/FrankZhou2017/p/7246946.html
Copyright © 2020-2023  润新知