Maven 当中 进行一个让 Web 工程依赖 Java 工程

让 Web 工程依赖 Java 工程

1. 观念

明确一个意识:从来只有 Web 工程依赖 Java 工程,没有反过来 Java 工程依赖 Web 工程。本质上来说,Web 工程依赖的 Java 工程其实就是 Web 工程里导入的 jar 包。最终 Java 工程会变成 jar 包,放在 Web 工程的 WEB-INF/lib 目录下。

下面我们要做的操作就是:把我们编写的 java 当中的 pro01-maven-java 工程的 jar 包,导入到我们的现在的 pro02-maven-web工程当中使用。

在这里插入图片描述

2. 操作

pro02-maven-web 工程的 pom.xml 中,找到 dependencies 标签,在 dependencies 标签中做如下配置:

在这里插入图片描述

<!-- 配置对Java工程pro01-maven-java的依赖 -->
<!-- 具体的配置方式:在dependency标签内使用坐标实现依赖 -->
<dependency>
  <groupId>com.rainbowSea.maven</groupId>
  <artifactId>pro01-maven-java</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

3. 在 Web 工程中,编写测试代码

证明在Web工程中可以正常使用Java工程中创建的那个类:Calculator

①补充创建目录

pro02-maven-web\src\main\java\com\rainbowSea\maven

可以使用mkdir命令:

mkdir src\test\java\com\rainbowSea\maven

②确认 Web 工程依赖了 junit

   
<!--导入的是对pro01-maven-java 中的封装的 jar的依赖-->
	<dependency>
	<!--通过指定被依赖工程的坐标完成依赖-->
	  <groupId>com.rainbowSea.maven</groupId>
      <artifactId>pro01-maven-java</artifactId>
      <version>1.0-SNAPSHOT</version>
	  <!--生命周期的范围-->
	  <scope>compile</scope>
	</dependency>

③创建测试类

把 Java 工程的编写 CalculatorTest.java 测试类到 pro02-maven-wb\src\test\java\com\rainbowSea\maven 目录下

在这里插入图片描述

package com.rainbowSea.maven;


import org.junit.Test;
import com.rainbowSea.maven.Calculator;
  
// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;
  
public class CalculatorTest{
  
  @Test
  public void testSum(){
    
    // 1.创建Calculator对象
    Calculator calculator = new Calculator();
    
    // 2.调用Calculator对象的方法,获取到程序运行实际的结果
    int actualResult = calculator.sum(5, 3);
    
    // 3.声明一个变量,表示程序运行期待的结果
    int expectedResult = 8;
    
    // 4.使用断言来判断实际结果和期待结果是否一致
    // 如果一致:测试通过,不会抛出异常
    // 如果不一致:抛出异常,测试失败
    assertEquals(expectedResult, actualResult);

    System.out.println("test method have been called ,Hello Mavne ");
    
  }
  
}

4. 执行Maven命令

①测试命令

mvn test # 运行测试程序,运行该测试程序,会先自动编译程序。

在这里插入图片描述

在这里插入图片描述

说明:测试操作中会提前自动执行编译操作,测试成功就说明编译也是成功的。

②打包命令

mvn clean package # 先清除,target ,在打包,得到最新的。

在这里插入图片描述

将我们的项目打包成 ‘war’

在这里插入图片描述

在这里插入图片描述

通过查看 war 包内的结构,我们看到被 Web 工程依赖的 Java 工程确实是会变成 Web 工程的 WEB-INF/lib 目录下的 jar 包。

在这里插入图片描述

③查看当前 Web 工程所依赖的 jar 包的列表

mvn dependency:list # 以 list 列表的形式显示该项目所依赖的 jar包

在这里插入图片描述

在这里插入图片描述

[INFO] The following files have been resolved:
[INFO]    junit:junit:jar:4.11:test
[INFO]    org.hamcrest:hamcrest-core:jar:1.3:test
[INFO]    javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO]    com.rainbowSea.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile

说明:javax.servlet:javax.servlet-api:jar:3.1.0:provided 格式显示的是一个 jar 包的坐标信息。格式是:

javax.servlet 表示的是:groupld 坐标向量

javax.servlet-api 表达的是:artfactld 坐标向量

jar 表示的是打包方式

3.1.0 表示的的是 version 版本

provided 表示的是依赖的范围。

这样的格式虽然和我们 XML 配置文件中坐标的格式不同,但是本质上还是坐标信息,大家需要能够认识这样的格式,将来从 Maven 命令的日志或错误信息中看到这样格式的信息,就能够识别出来这是坐标。进而根据坐标到Maven 仓库找到对应的jar包,用这样的方式解决我们遇到的报错的情况。

④以树形结构查看当前 Web 工程的依赖信息

mvn dependency:tree # 以树形结构,查看当前项目依赖的信息

在这里插入图片描述

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ pro02-maven-web ---
[INFO] com.rainbowSea.maven:pro02-maven-web:war:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:4.11:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] \- com.rainbowSea.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile

在这里插入图片描述

我们在 pom.xml 中并没有依赖 hamcrest-core,但是它却被加入了我们依赖的列表。原因是:junit 依赖了hamcrest-core,然后基于依赖的传递性,hamcrest-core 被传递到我们的工程了。

5. 最后:感谢

该文章参考了,如下博主的分享。我们再此,真诚的感谢博主的技术的热情的分享。

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐感谢如下博主的分享 ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

【1】:兵器|代码重工

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值