zoukankan      html  css  js  c++  java
  • 《从零开始搭建游戏服务器》项目管理工具Maven

    简介

    什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架。 
    Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作,例如:创建报表、检查、构建和测试自动化设置。概况地说,Maven简化和标准化项目建设过程,增加可重用性并负责建立相关的任务。 
    (注:Maven项目的结构和内容在一个XML文件中声明,pom.xml项目对象模型(POM),这事系统的基本单元)

    Apache Maven 是一种创新的软件项目管理工具,提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档。最强大的功能就是能够自动下载项目依赖库。

    Maven功能:

    • 依赖库管理: 
      我们在项目开发中经常会引用一些jar包,按照往常的做法是搜索哪些是必须的然后再放到我们的项目中,比较麻烦。而maven在pom配置文件中对依赖库进行了配置,例如:使用struts2的xx版本,xx发布的,maven插件便会从中央仓库去获取相应的jar包;
    • 项目的构建: 
      例如java开发时,使用maven可以替代eclipse在创建和编译项目时的作用;
    • 项目的版本管理。

    Maven安装使用:

    1.下载安装包:

    Maven官网下载指定版本的maven安装包,例如这里我下载的是:apache-maven-3.5.4-bin.zip

    2.解压配置环境:

    直接解压安装包到指定目录(文件目录最好不带中文),打开环境变量,新建一个变量,变量名:MAVEN_HOME,变量值为压缩包解压之后的文件路径,例如: 
     
    往Path变量中添加:%MAVEN_HOME%in;,配置完成后打开命令行窗口,输入mvn -version,假如之前的配置操作成功,即如下: 

    基本操作:

    以往我们创建一个java工程都是在eclipse中完成的,如今我们可以使用maven来完成创建,步骤如下: 
    相关指令集:

    mvn archetype:generate  #创建项目指令
    mvn compile             #编译项目指令
    mvn test                #测试项目指令
    mvn clean package       #打包项目指令
    mvn clean install       #项目仓库化指令

    1.使用archetype指令来创建项目:

    mvn archetype:generate
    -DgroupId=com.test.maven(项目包名)
    -DartifactId=TestMaven(工程名)
    -DarchetypeArtifactId=maven-archetype-quickstart
    -DinteractiveMode=false

    初次创建的时候,会下载很多maven的默认包到系统盘用户数据中的Administrator/.m2 epository目录下: 
     

    问题:假如你和我一样在创建文件的时候,出现了卡在Generating Project in Batch mode的问题,那是因为创建项目时需要下载一个4.1M左右的archetype-catalog.xml文件

    优化方案:假如要加快这个过程,可以直接到http://repo.maven.apache.org/maven2/archetype-catalog.xml下载此文件然后放到本地Administrator.m2 epositoryorgapachemavenarchetypearchetype-catalog3.0目录下,创建项目指令最后添加一个-DarchetypeCatalog=local即可。

    创建成功,可以看到: 
     
    创建出来的目录结构如下:

    TestMaven
       |-src
       |---main
       |-----java
       |-------com
       |---------test
       |-----------maven
       |-------------App.java
       |---test|-----java
       |-------com
       |---------test
       |-----------maven
       |-----------AppTest.java
       |-pom.xml

    2.编译运行:

    打开pom.xml文件,可以看到里面的<dependencies></dependencies>依赖集合中添加了一个测试用的junit3.8.1版本的测试包配置信息:

    <project 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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.test.maven</groupId>
      <artifactId>TestMaven</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>TestMaven</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>

    在命令行窗口进入到刚刚创建的TestMaven项目目录下,使用编译指令进行编译:

    mvn compile

    编译结束后会在当前目录下生成一个target文件夹,里面有编译.java源码得到的.class文件,而且Administrator.m2 epository文件夹会多出一个junit的目录,pom.xml中配置的相应版本的jar依赖包会被下载到此目录下: 
     
    使用测试指令进行测试运行:

    mvn test

    3.打包:

    假如我们先修改一下AppTest.java入门函数testApp()的内容,加入一个打印代码:

        public void testApp()
        {
            assertTrue( true );
            System.out.println("hello maven");
        }

    在当前项目目录下运行打包指令:

    mvn clean package

    执行此指令完成了几个操作:

    • 清理目标目录(clean);
    • target目录下会生成一个打包项目得到的TestMaven-1.0-SNAPSHOT.jar目标文件(带SNAPSHOT表示不稳定版本);
    • 生成测试报告到targetsurefire-reports目录;
    • Maven编译源码,并运行测试用例。

    4.将项目当做Maven的本地仓库:

    假设通过maven创建的项目已经打包并已测试没问题,又想在其他项目使用本项目的功能,可以通过maven指令将此项目变为本地仓库,指令如下:

    mvn clean install

    指令运行之后,在Administrator.m2 epository文件夹会增加此项目的目录,其他项目需要用到本项目功能,只需要通过从Maven本地仓库提取jar包即可。

  • 相关阅读:
    deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
    deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
    deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
    deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch Normalization和程序框架
    deeplearning.ai 改善深层神经网络 week2 优化算法
    deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面
    cs231n spring 2017 lecture8 Deep Learning Networks
    cs231n spring 2017 lecture7 Training Neural Networks II
    cs231n spring 2017 lecture6 Training Neural Networks I
    cs231n spring 2017 Python/Numpy基础
  • 原文地址:https://www.cnblogs.com/KylinBlog/p/9263059.html
Copyright © 2011-2022 走看看