maven基础篇(三)

简介: maven基础篇

7、编译


此时直接执行 mvn compile 命令出错:【记得去pom.xml文件所在目录运行】


网络异常,图片无法展示
|


上面的错误信息说明:我们的 Web 工程用到了 HttpServlet 这个类,而 HttpServlet 这个类属于 servlet-api.jar 这个 jar 包。此时我们说,Web 工程需要依赖 servlet-api.jar 包。


网络异常,图片无法展示
|


8、配置对 servlet-api.jar 包的依赖


对于不知道详细信息的依赖可以到https://mvnrepository.com/网站查询。


  • 有很多的时候注意区别:看组织
  • 有很多版本的时候一般选下载人最多的


比如,我们找到的 servlet-api 的依赖信息:


<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>


  • 这样就可以把上面的信息加入 pom.xml。在 【dependencies 标签里面添加】重新执行 mvn clean compile 命令。【mvn命令可以组合执行
    网络异常,图片无法展示
    |


9、将 Web 工程打包为 war 包


运行 mvn package 命令,生成 war 包的位置如下图所示:


网络异常,图片无法展示
|


10、将 war 包部署到 Tomcat 上运行


【最原始的部署方式,能够运行起来就行,了解内容】


将 war 包复制到 Tomcat/webapps 目录下【复制那个解压过的文件夹就可以


  • 复制完后,名称可以随意更改
  • 然后运行tomcat
  • 在浏览器粘贴自己的端口号加你的项目名称名【即你更改过的那个名称的名字】
  • 将 war 包复制到 Tomcat/webapps 目录下,启动tomcat 会自动解压


网络异常,图片无法展示
|


网络异常,图片无法展示
|


实验五:WEB工程依赖Java工程


1、概念


  • 从来只有 Web 工程依赖 Java 工程,没有反过来 Java 工程依赖 Web 工程。
  • 即 war包里面可以有个jar包


2、操作


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


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


网络异常,图片无法展示
|


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


①补充创建目录

pro02-maven-web\src\test\java\com\atguigu\maven


②确认 Web 工程依赖了 junit


<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>


③创建测试类

把 Java 工程的 CalculatorTest.java 类复制到 pro02-maven-wb\src\test\java\com\atguigu\maven 目录下


4、执行Maven命令


①测试命令


mvn test


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


②打包命令


mvn package


网络异常,图片无法展示
|


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


网络异常,图片无法展示
|


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

mvn dependency:list


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

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


groupId:artifactId:打包方式:version:依赖的范围


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


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


mvn dependency:tree
[INFO] com.atguigu.maven:pro02-maven-web:war:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:4.12:test
[INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided
[INFO] - com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile
  • 我们在 pom.xml 中并没有依赖 hamcrest-core,但是它却被加入了我们依赖的列表。原因是:junit 依赖了hamcrest-core,然后基于依赖的传递性,hamcrest-core 被传递到我们的工程了。


实验六:测试依赖的范围【重点】


1、依赖范围


  • 标签的位置:dependencies/dependency/scope
  • scope标签的可选值:compile/test/provided/system/runtime/import
  • 不选代表默认值,compile


①compile 和 test 对比


网络异常,图片无法展示
|


②compile 和 provided 对比


网络异常,图片无法展示
|


③结论【重点】


  • compile:通常使用的第三方框架的 jar 包这样在项目实际运行时真正要用到的 jar 包都是以 compile 范围进行依赖的。比如 SSM 框架所需jar包。
  • test:测试过程中使用的 jar 包,以 test 范围依赖进来。比如 junit。
  • provided:在开发过程中需要用到的“服务器上的 jar 包”通常以 provided 范围依赖进来。比如 servlet-api、jsp-api。
  • 而这个范围的 jar 包之所以不参与部署、不放进 war 包,就是避免和服务器上已有的同类 jar 包产生冲突,同时减轻服务器的负担。


2、测试


①验证 compile 范围对 main 目录有效


main目录下的类:HelloServlet 使用compile范围导入的依赖:pro01-atguigu-maven


验证:使用compile范围导入的依赖对main目录下的类来说是有效的


有效:HelloServlet 能够使用 pro01-atguigu-maven 工程中的 Calculator 类


验证方式:在 HelloServlet 类中导入 Calculator 类,然后编译就说明有效。

目录
相关文章
|
Java Maven 开发工具
maven基础篇(四)
maven基础篇
172 1
|
XML 存储 Java
Maven基础学习——依赖配置(1):配置同一项目下的三个工程
选择Maven后直接选择下一步(注意这里不需要进行任何操作,不用搜索quickstart,直接点击下一步即可)
250 0
Maven基础学习——依赖配置(1):配置同一项目下的三个工程
|
Java 应用服务中间件 Maven
Maven基础学习——tomcat插件配置(含web工程配置)
Maven基础学习——tomcat插件配置(含web工程配置)
1615 0
Maven基础学习——tomcat插件配置(含web工程配置)
|
IDE Java Apache
|
JavaScript Java Maven
|
存储 IDE Java
|
存储 JavaScript Java
Maven 基础
Maven 基础
146 0
Maven 基础
|
存储 IDE 前端开发
Maven基础
Maven基础
135 0
Maven基础
|
存储 IDE 前端开发
Maven基础
Maven基础
100 0
Maven基础
|
Java Linux Maven
Linux java基础环境搭建 ->nexus maven私服
Linux java基础环境搭建 ->nexus maven私服
138 0