转】Maven学习总结(二)——Maven项目构建过程练习

时间:2024-08-03 10:04:20

原博文出自于:http://www.cnblogs.com/xdp-gacl/p/4051690.html    感谢!

 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程

一、创建Maven项目

1.1、建立Hello项目

  1、首先建立Hello项目,同时建立Maven约定的目录结构和pom.xml文件

    Hello
      | --src
      | -----main
      | ----------java
      | ----------resources
      | -----test
      | ---------java
      | ---------resources
      | --pom.xml

转】Maven学习总结(二)——Maven项目构建过程练习

2、编辑项目Hello根目录下的pom.xml,添加如下的代码:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4 <groupId>me.gacl.maven</groupId>
5 <artifactId>Hello</artifactId>
6 <version>0.0.1-SNAPSHOT</version>
7 <name>Hello</name>
8
9 <!--添加依赖的jar包-->
10 <dependencies>
11 <!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
12 <dependency>
13 <groupId>junit</groupId>
14 <artifactId>junit</artifactId>
15 <version>4.9</version>
16 <scope>test</scope>
17 </dependency>
18
19 </dependencies>
20 </project> 3、在src/main/java/me/gacl/maven目录下新建文件Hello.java

转】Maven学习总结(二)——Maven项目构建过程练习

Hello.java的代码如下:

package me.gacl.maven;
2
3 public class Hello {
4
5 public String sayHello(String name){
6 return "Hello "+name+"!";
7 }
8 }
转】Maven学习总结(二)——Maven项目构建过程练习
4、在/src/test/java/me/gacl/maven目录下新建测试文件HelloTest.java
转】Maven学习总结(二)——Maven项目构建过程练习
 HelloTest.java的代码如下:
package me.gacl.maven;
2 //导入junit的包
3 import org.junit.Test;
4 import static junit.framework.Assert.*;
5
6 public class HelloTest {
7
8 @Test
9 public void testHello(){
10 Hello hello = new Hello();
11 String results = hello.sayHello("gacl");
12 assertEquals("Hello gacl!",results);
13 }
14 }
转】Maven学习总结(二)——Maven项目构建过程练习

1.2、使用Maven编译、清理、测试、打包项目

1、使用Maven编译项目,编译项目的命令是:"mvn compile"

  打开cmd命令行,

转】Maven学习总结(二)——Maven项目构建过程练习

进入Hello项目根目录执行"mvn compile"命令编译项目的java类

转】Maven学习总结(二)——Maven项目构建过程练习

编译成功之后,可以看到hello项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

打开【target】文件夹,可以看到里面有一个【classes】文件夹,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

【classes】文件夹中存放的就是Maven我们编译好的java类,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

这就是使用Maven自动编译项目的过程。

2、使用Maven清理项目,清理项目的命令是:"mvn clean"

  进入Hello项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

3、使用Maven测试项目,测试项目的命令是:"mvn test"

  进入Hello项目根目录执行"mvn test"命令测试项目,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

测试成功之后,可以看到hello项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven帮我们生成的文件夹,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

打开【target】文件夹,可以看到里面有一个【classes】和【test-classes】文件夹,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

也就是说,我们执行执行"mvn test"命令测试项目时,Maven先帮我们编译项目,然后再执行测试代码。

4、使用Maven打包项目,打包项目的命令是:"mvn package"

  进入Hello项目根目录执行"mvn package"命令测试项目,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

转】Maven学习总结(二)——Maven项目构建过程练习

打包成功之后,可以看到hello项目的根目录下的【target】文件夹中多了一个Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是打包成功之后Maven帮我们生成的jar文件,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

5、使用Maven部署项目,部署项目的命令是:"mvn install"

  进入Hello项目根目录执行"mvn install"命令测试项目,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

转】Maven学习总结(二)——Maven项目构建过程练习

安装成功之后,首先会在hello项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是安装成功之后Maven帮我们生成的jar文件,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个Hello-0.0.1-SNAPSHOT.jar,所以Maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

所以使用"mvn install"命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多。

1.2、组合使用Maven的命令

  maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:

  1、先清理再编译:"mvn clean compile",如下所示:

转】Maven学习总结(二)——Maven项目构建过程练习

还有的就是"mvn clean test","mvn clean package","mvn clean install",这些组合命令都比较常用。

  以上就是关于Maven构建项目的各个个过程演示。

二、在别的项目中使用通过Maven安装生成的项目的jar包

  在上面,我们使用mvn install命令将hello这个项目打包成了Hello-0.0.1-SNAPSHOT.jar包并且发布到本地的maven仓库E:\repository\me\gacl\maven\Hello\0.0.1-SNAPSHOT中,下面我们来看看如何在别的项目中使用Hello-0.0.1-SNAPSHOT.jar

  1、新建HelloFriend项目,同时建立Maven约定的目录结构和pom.xml文件
    HelloFriend
        | --src
      | -----main
      | ----------java
      | ----------resources
      | -----test
      | ---------java
      | ---------resources
      | --pom.xml

  如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

2、编辑项目HelloFriend根目录下的pom.xml,添加如下的代码:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4 <groupId>me.gacl.maven</groupId>
5 <artifactId>HelloFriend</artifactId>
6 <version>0.0.1-SNAPSHOT</version>
7 <name>HelloFriend</name>
8
9 <!--添加依赖的jar包-->
10 <dependencies>
11 <!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
12 <dependency>
13 <groupId>junit</groupId>
14 <artifactId>junit</artifactId>
15 <version>4.9</version>
16 <scope>test</scope>
17 </dependency>
18 <!--项目要使用到Hello的jar包,所以在这里添加Hello的jar包的依赖-->
19 <dependency>
20 <groupId>me.gacl.maven</groupId>
21 <artifactId>Hello</artifactId>
22 <version>0.0.1-SNAPSHOT</version>
23 <scope>compile</scope>
24 </dependency>
25 </dependencies>
26 </project>
转】Maven学习总结(二)——Maven项目构建过程练习

3、在src/main/java/me/gacl/maven目录下新建文件HelloFriend.java,如下图所示:

转】Maven学习总结(二)——Maven项目构建过程练习

HelloFriend.java的代码如下:

package me.gacl.maven;
2
3 import me.gacl.maven.Hello;
4
5 public class HelloFriend {
6
7 public String sayHelloToFriend(String name){
8
9 Hello hello = new Hello();
10 String str = hello.sayHello(name)+" I am "+this.getMyName();
11 System.out.println(str);
12 return str;
13 }
14
15 public String getMyName(){
16 return "John";
17 }
18 }
转】Maven学习总结(二)——Maven项目构建过程练习

 4、在/src/test/java/me/gacl/maven目录下新建测试文件HelloFriendTest.java,如下图所示:

  aaarticlea/png;base64,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" alt="" />

  HelloFriendTest.java的代码如下:

package me.gacl.maven;
2
3 import static junit.framework.Assert.assertEquals;
4 import org.junit.Test;
5 import me.gacl.maven.Hello;
6
7 public class HelloFriendTest {
8
9 @Test
10 public void tesHelloFriend(){
11
12 HelloFriend helloFriend = new HelloFriend();
13 String results = helloFriend.sayHelloToFriend("gacl");
14 assertEquals("Hello gacl! I am John",results);
15 }
16 }
转】Maven学习总结(二)——Maven项目构建过程练习

  

  5、在HelloFriend目录下执行命令"mvn package"测试Hello-0.0.1-SNAPSHOT.jar里面的类是否引用成功,如下所示:

转】Maven学习总结(二)——Maven项目构建过程练习