Maven学习笔记之第一个Maven项目(Linux)

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就可以了,执行命令

1

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键确定,提示创建成功。

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

1

2

cd firstmaven  #切换目录到firstmaven

tree   #查看该文件夹下目录结构

  2. maven项目文件说明

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

  • pom.xml文件(自动生成的)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<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

1

2

3

4

5

6

7

8

9

10

11

12

13

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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命令,执行命令:

1

mvn compile

              ......

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

1

mvn test

           ......

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

1

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/目录下,输入命令:

1

mvn site

        ......

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

  • 生成报告文档

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

1

mvn javadoc:javadoc

        ......

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

 

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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值