Maven 之项目构建过程详解

创建Maven项目

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

2、编辑项目Hello根目录下的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>me.gacl.maven</groupId>
  <artifactId>Hello</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Hello</name>
  
    <!--添加依赖的jar包-->
    <dependencies>
        <!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>        
        
    </dependencies>
</project>

3、在src/main/java/me/gacl/maven目录下新建文件Hello.java
Hello.java的代码如下:

public class Hello {
    public String sayHello(String name){
        return "Hello "+name+"!";
    }
}

4、在/src/test/java/me/gacl/maven目录下新建测试文件HelloTest.java  
HelloTest.java的代码如下:

//导入junit的包
import org.junit.Test;
import static junit.framework.Assert.*;

public class HelloTest {

    @Test
    public void testHello(){
        Hello hello = new Hello();
        String results = hello.sayHello("gacl");
        assertEquals("Hello gacl!",results);        
    }
}

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

1、使用Maven编译项目,编译项目的命令是:“mvn compile”
进入Hello项目根目录执行"mvn compile"命令编译项目的java类。
在这里插入图片描述
编译成功之后,可以看到hello项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹。
打开【target】文件夹,可以看到里面有一个【classes】文件夹。
【classes】文件夹中存放的就是Maven我们编译好的java类,如下图所示:
在这里插入图片描述
这就是使用Maven自动编译项目的过程。

2、使用Maven清理项目,清理项目的命令是:“mvn clean”
进入Hello项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉,如下图所示:
在这里插入图片描述
3、使用Maven测试项目,测试项目的命令是:“mvn test”
进入Hello项目根目录执行"mvn test"命令测试项目,如下图所示:
在这里插入图片描述
测试成功之后,可以看到hello项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven帮我们生成的文件夹。
打开【target】文件夹,可以看到里面有一个【classes】和【test-classes】文件夹,如下图所示:
在这里插入图片描述
也就是说,我们执行执行"mvn test"命令测试项目时,Maven先帮我们编译项目,然后再执行测试代码。

4、使用Maven打包项目,打包项目的命令是:“mvn package”
进入Hello项目根目录执行"mvn package"命令测试项目,如下图所示:
在这里插入图片描述
在这里插入图片描述
打包成功之后,可以看到hello项目的根目录下的【target】文件夹中多了一个Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是打包成功之后Maven帮我们生成的jar文件,如下图所示:
在这里插入图片描述
5、使用Maven部署项目,部署项目的命令是:“mvn install”
进入Hello项目根目录执行"mvn install"命令测试项目,如下图所示:
在这里插入图片描述
在这里插入图片描述安装成功之后,首先会在hello项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有Hello-0.0.1-SNAPSHOT.jar,这个Hello-0.0.1-SNAPSHOT.jar就是安装成功之后Maven帮我们生成的jar文件,如下图所示:
在这里插入图片描述
除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个Hello-0.0.1-SNAPSHOT.jar,所以Maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中,如下图所示:
在这里插入图片描述
所以使用"mvn install"命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多。

组合使用Maven的命令

maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的,常用的命令组合如下:
1、先清理再编译:“mvn clean compile”,如下所示:
在这里插入图片描述
还有的就是"mvn clean test",“mvn clean package”,“mvn clean install”,这些组合命令都比较常用。

Maven跳过单元测试

  • -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
  • -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

1、使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译。
命令:mvn package -Dmaven.test.skip=true
也可以在pom.xml文件中修改:

<plugin>  
    <groupId>org.apache.maven.plugin</groupId>  
    <artifactId>maven-compiler-plugin</artifactId>  
    <version>2.1</version>  
    <configuration>  
        <skip>true</skip>  
    </configuration>  
</plugin>  
<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-surefire-plugin</artifactId>  
    <version>2.5</version>  
    <configuration>  
        <skip>true</skip>  
    </configuration>  
</plugin>

2、使用 mvn package -DskipTests 跳过单元测试,但是会继续编译;如果没时间修改单元测试的bug,或者单元测试编译错误。使用上面的,不要用这个
命令:mvn package -DskipTests
pom方式:

<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-surefire-plugin</artifactId>  
    <version>2.5</version>  
    <configuration>  
        <skipTests>true</skipTests>  
    </configuration>  
</plugin>

默认idea的跳过测试采用的是第二种,所以仍然会编译代码,如果想不执行测试用例,也不编译测试用例类,那么必须采用第一种方式在pom中加上skip为true,这样才能跳过编译
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值