Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven repository(https://mvnrepository.com/)上搜索就可以了,包括所有的版本。下面记录学习过程的第一个Maven项目,在学习之前需要配置JDK和Maven的环境变量,具体需要查找资料搭建,不难。注意:JDK版本需要1.7及以上,Maven的官网下载也有说明(requirement)。如果在终端输入命令mvn -v显示如下信息的为安装成功了,否则为安装失败。创建的文件都存到github上了,地址:https://github.com/quanbisen/firstmaven

  博文内容:

  1. 创建maven项目文件
  2. maven项目文件说明
  3. 编写项目源代码及测试代码
  4. 编译项目、运行测试和打包
  5. 生成站点和报告文件

  1. 创建maven项目文件

  创建maven项目文件,在终端执行mvn archetype:generate就可以了,执行命令

mvn archetype:generate

  它会联网自动下载一些需要的插件文件,然后要求选择项目的类型(Choose archetype),我按了enter选择默认(默认是7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)),包含maven工程样例。

  然后到输入groupId、artifactId、version和package,groupId一般输入公司名称就可以了,而artifactId输入项目名称,package为包名。如下图所示:

  最后enter键确定,提示创建成功。

  执行切换目录命令,进入创建的项目,查看创建的项目文件结构。

cd firstmaven  #切换目录到firstmaven
tree #查看该文件夹下目录结构

  2. maven项目文件说明

  上面的结构图可以看到maven项目的结构,由一个pom.xml文件和src目录组成,src下面分为main和test。pom.xml文件是maven的项目管理文件,可以向该文件添加dependency(即jar包)、设置编译、打包等插件等。main文件夹存放项目的源代码,test文件存放测试的代码(这里默认创建了helloworld的App模板了)。

  • pom.xml文件(自动生成的)
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>edu.gzmtu</groupId>
<artifactId>firstmaven</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <name>firstmaven</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

  上面的pom.xml文件是默认生成的,其详细说明如下:

<groupId>:创建项目时指定的groupId
<artifactId>:创建项目时指定的artifactId
<version>:创建项目时指定的version
<packaging>:项目编译好后,打成jar包安装发布
<denpendency>:测试时需要的JUnit jar包,groupId为junit,artifactId为junit,version为3.8.1,scope为test。

  • main文件夹

  main文件夹存放项目java源文件,如创建的模板文件的App.java

>>main/java/lollipop/App.java

package lollipop;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
  • test文件夹

  test文件存放源代码的测试文档,如创建的模板文件的AppTest.java

>>test/java/lollipop/AppTest.java

package lollipop;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite; /**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
} /**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
} /**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}

  3. 编写项目源代码及测试代码

  这里编写一个统计某个字符串某个字符出现次数的Util类,并编写UtilTest类的测试方法。其中Util类存放在main目录下的lollipop包,UtilTest类存放在test目录下的lollipop包,并且修改junit的版本为4.x版本,3.x版本我测试时报错。

>>main/java/lollipop/Util.java

package lollipop;

/**
* 统计字符的一个工具类
* @author super lollipop
* @version 2019/10/6
*/
public final class Util {
/**
* 统计某个字符串某个字符出现次数的函数
* @param string 某个字符串
* @param character 某个字符串
* @return int 数字
* */
public static int countCharacter(String string,char character){
char[] chars = string.toCharArray();
int count = 0;
for (char c:chars){
if (c == character){
count = count + 1;
}
}
return count;
}
}

>>test/java/lollipop/UtilTest.java

package lollipop;

import junit.framework.Assert;
import org.junit.Test; /**
* 测试Util工具类的测试类
* @author super lollipop
* @version 2019/10/6
*/
public class UtilTest { /**
* 单元测试,对Util的countCharacter进行测试*/
@Test
public void testCountCharacter(){
String string= "计科164-09-lollipop";
char character = '-';
int countExpect = 2;
int count = Util.countCharacter(string,character);
Assert.assertEquals(countExpect,count);
}
}

>>pom.xml文件 (修改了junit的版本为4.10)

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>edu.gzmtu</groupId>
<artifactId>firstmaven</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <name>firstmaven</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

  4. 编译项目、运行测试和打包

  编译项目使用mvn compile命令,执行命令:

mvn compile

              ......

  可以看到编译成功了(BUILD SUCCESS),输入mvn clean可以把编译的class文件清除掉。下面开始测试,执行命令:

mvn test

          ......

  可以看到测试运行了两个类,AppTest(模板创建的)和UtilTest(我创建的)测试都通过了。我们还可以把本项目打包成jar文件,输入命令:

mvn install

      ......

  可以看到提示信息上的/home/lollipop/.m2/repository/edu/gzmtu/firstmaven/1.0/firstmaven-1.0.jar,mvn把我们的项目文件jar包存储到maven管理的repository目录下了。执行ll命令查看目录下的~/.m2/repository/edu/gzmtu/firstmaven/1.0/文件,可以看到生成的jar包文件

  5. 生成站点和报告文件

  在执行生成站点和报告文件之前,需要先添加插件,具体为添加maven-project-info-reports-plugin和maven-javadoc-plugin,只需要修改pom.xml文件就可以添加插件了。

>>pom.xml(添加了插件的)

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>edu.gzmtu</groupId>
<artifactId>firstmaven</artifactId>
<version>1.0</version>
<packaging>jar</packaging> <name>firstmaven</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.7</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</build> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
  • 生成站点文件

  生成站点文件输入命令mvn site就可以了,它会生成一个index.html文件并存储在target/site/目录下,输入命令:

mvn site

        ......

  用浏览器打开站点文件,文件内容显示本项目的信息,包括插件、版权、团队等信息(我这里没有配置)。如下图所示:

  • 生成报告文档

  生成报告文档是生成API Doc文档,和JDK的Doc文档类似,它会生成一个index.html文件并存储在target/site/apidocs/目录下,输入命令:

mvn javadoc:javadoc

        ......

  用浏览器打开报告文件,文件显示了本项目的Java源代码的API,如下图所示:

------分割线------


  顺带说,上面介绍的是maven在本地的使用。现在IDEA编译器已经集成了maven了,可以很方便地使用图形界面管理我们的Java项目,当然IDEA也支持命令行方式操作。

Maven学习笔记之第一个Maven项目(Linux)的更多相关文章

  1. maven学习笔记(定制一个Web项目)

    创建web项目: mvn archetype:generate -DgroupId=cn.net.comsys.ut4.simpleweb -DartifactId=simple-web -Dpack ...

  2. maven 学习---用Eclipse创建一个Maven Web项目

    下面是使用 Eclipse 来创建一个Maven Web项目的说明.这是相当简单的. 现在让我们开始吧! 1: 启动 Eclipse, 点击 File->New->Other 2: 在弹出 ...

  3. Maven学习笔记【1】 -- Maven简介

    本文主要讲Maven的基础知识. 一 什么是Maven? Maven是一个项目管理工具.Maven提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档.最强大的功能就是能够自动下 ...

  4. Maven学习笔记(1)之安装Maven

    此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤 1.下载Maven的最新版本,地址:http://maven.apache.org/downlo ...

  5. Maven学习笔记(一)—— Maven基础

    一.Maven介绍 1.1 什么是maven? Maven是apache下的一个纯Java开发的开源项目,它是一个项目管理工具,使用maven对Java项目进行构建.依赖管理. 1.2 什么是项目构建 ...

  6. WIX 学习笔记 - 2 第一个WIX 项目 HelloWIX

    程序员们都非常熟悉 Hello World!,基本上所有的语言书都以打印一个 Hello World! 作为第一个代码示例. 我们也要发扬代码界的优良传统,使用 Hello WIX! 作为我们的入门示 ...

  7. Maven学习 (三) 使用m2eclipse创建web项目

    1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容 2.新建一个maven的项目 3.下一步默认配置,使用默认的工作空间,或者你可以自己选择其他的空间 ...

  8. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  9. Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

随机推荐

  1. TCP连接时动态端口的相关问题说明

    最近在线上遇到一个TCP动态端口相关的问题,之前没有留意过此类问题,做个笔记记录在这里,希望也能给大家提供个参考. 简单介绍下问题的场景:Windows服务器上,部署了网关程序SG和RPC进程,其中R ...

  2. C# WPF开源控件库:MahApps.Metro

    其实站长很久之前就知道这个开源WPF控件库了,只是一直欣赏不了这种风格,但也star了该项目.每次浏览该仓库时,发现star越来越多,也看到很多网友对它的褒奖,所以今天就向大家推荐这款WPF控件库. ...

  3. uniapp云打包配置讲解

    HBuilderX开发工具,菜单栏:发行(U) → 原生App云打包(P) 安卓云打包配置: 云打包配置分为公共测试证书和自有证书. 云打包配置使用公共测试证书很简单,直接勾选后打包. 如果要测试第三 ...

  4. 测开之数据类型&#183; 第3篇《列表推导式、字典推导式、2种方式创建生成器》

    坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.列表推导式 二.字典推导式 三.2种方式创建生成器 1.生成器表达式 2.函数里面,通过 y ...

  5. 第七章 Rocketmq--消息驱动

    今天咱们接着 上一篇第六章 Sleuth–链路追踪 继续写 SpringCloud Alibaba全家桶 , 第七章 Rocketmq--消息驱动,废话不多说,开始了 7.1 MQ简介 7.1.1 什 ...

  6. 记一次真实的webpack优化经历

    前言 公司目前现有的一款产品是使用vue v2.0框架实现的,配套的打包工具为webpack v3.0.整个项目大概有80多个vue文件,也算不上什么大型项目. 只不过每次头疼的就是打包所耗费的时间平 ...

  7. U8CO使用C#版(一)

    1.懒加载: object obj = null; System.Type oType = System.Type.GetTypeFromProgID("U8Login.clsLogin&q ...

  8. Fresco 二三事:图片处理之旋转、缩放、裁剪切割图片

    关于Fresco加载图片的处理,例如旋转.裁剪切割图片,在官方文档也都有提到,只是感觉写的不太详细,正好最近项目里有类似需求,所以分享一些使用小tip,后面的朋友就不用再走弯路浪费时间了.(测试图片分 ...

  9. 解决UE4缓存使C盘膨胀的问题

    使用UE4的时候会发现C盘越来越小了,那是因为UE4引擎的缓存文件默认保存在C盘的缘故. 概述 一.出现的问题:UE4的缓存文件会导致C盘膨胀. 二.解决的方式:请严格按照下列步骤来执行.1. 更改U ...

  10. Impala的count(distinct QUESTION_ID) 与ndv(QUESTION_ID)

    在impala中,一个select执行多个count(distinct col)会报错,举例: select C_DEPT2, count(distinct QUESTION_BUSI_ID) as ...