Maven JavaWeb 工程的 pom.xml 文件

了解 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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>youka</groupId>
  <artifactId>test</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>test Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>test</finalName>
  </build>
</project>
  1. <modelVersion>4.0.0</modelVersion><groupId>youka</groupId><artifactId>test</artifactId> 这三个标签和 JavaSE 工程的相同,也是起到一个坐标的作用;
  2. <packaging>war</packaging>,如果不写这个标签,默认是 jar 的;
  3. <name>test Maven Webapp</name> <url>http://maven.apache.org</url>,这两个起到的是辅助性的作用,比如 url 是当前这个工程访问时的路径;
  4. <dependencies> </dependencies>,这标签的单词的意思是依赖,这是需要重点掌握的标签;
  5. <build> </build>,在构建 Maven 工程时,相关的环境配置、版本配置、插件配置时需要在这个标签中进行

依赖

  在 pom.xml 文件中,重点需要了解的就是 <dependencies> </dependencies> 这个标签。在<dependencies> </dependencies>标签中需要摆放的就是一个又一个的<dependency> </dependency>标签,这个标签就是表示一个依赖,在这个标签中定义出来一个依赖的坐标,其中的<scope></scope>表示这个依赖是在构建 Maven 工程的那个阶段或者那个场景使用,在刚开始学习的过程中,可以先放放<scope></scope>标签的使用。

  说了这么多,可以也不明白依赖是干嘛的,简单来讲,依赖应用在导入第三方 jar 包上。
  在传统的 JavaSE 和 JavaEE 工程中,导入第三方 jar 包(例如 mysql 驱动 jar 包)的流程:如果是 JavaSE,需要先将 jar 包复制到工程中,然后将其添加到 Build Path 中;如果是 JavaEE 直接将 jar 包复制到 WebContext.WEB-INF.lib 文件夹中即可,不需要添加到 Build Path 中,Eclipse 会自动完成。

  而在 Maven 工程中,就需要使用依赖来完成第三方 jar 包的导入。例如,导入 mysql 驱动 jar 包。

<dependencies>
	 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>8.0.13</version>
    </dependency>
</dependencies>

  保存文件之后,就会发现,左侧的项目中的 Maven Dependencies 中导入了 mysql-connector-java-8.0.13 这个 mysql 的驱动 jar 包了。

在这里插入图片描述
  可以看到,我在依赖中写的是 junit 和 mysql 两条依赖,可是导入的是三个 jar 包,这就涉及到了依赖的两个概念——直接依赖和间接依赖。
  其中 junit 和 mysql 都是我们直接需要的 jar 包,它们是直接依赖,而 protobuf 是 mysql 需要的 jar 包,Maven 将其一并引入进来,是间接依赖。
  这就是 Maven 的一个好处:我们只需要记忆直接需要的那一个依赖的名字,就可以将所需要的东西都引入进来
  而传统的开发方式则需要将所有 jar 包一个一个的引入,非常耗时,而且还需要记忆一系列的名字、版本号,对环境搭建的功底要求比较高,甚至环境搭配好了,但是在使用过程中丢了其中一个 jar 包,很难被查出来,这也是传统模式慢慢被淘汰的原因。
  比如我们后面需要学习的 Spring 框架,它需要引入很多 jar 包,如果使用传统方式非常耗时。

在这里插入图片描述
  依赖关系一定是单向的!!!,不允许出现相互依赖的现象,即 A 依赖 B,B 依赖 A 是不被允许的。依赖是一个树形结构。

  因为导入 jar 包需要用到依赖,刚开始接触的时候有很多依赖都是记不住的,这个时候就可以用这个网站检索需要的第三方 jar 包的依赖了。https://mvnrepository.com/

插件

  一般称 <build> </build> 为构建,用于环境配置、版本配置、插件配置。Maven 插件主要有 tomcat7/jetty/maven-compliler/…

注意:这里的 tomcat7是 maven 的插件,而之前在 JavaEE 中用的 Tomcat 是Eclipse 的插件,是不一样的,maven 插件需要使用 build 标签在 pon.xml 中定义,而 Eclipse 的 Tomcat 插件依旧要像之前在 JavaEE 中的使用一样。

  在 <build> </build> 中常用的标签一个是 <finalName></finalName>,一个是<plugins></plugins>

  1. finalName 标签的内容是我们工程最后打包的名字,如果不配置的话,默认是 groupId、artifactId、version 这三个标签组合的名字,文件类型是 jar 或者 war;
  2. plugins 标签和 dependecies 标签差不多,其内部是多个 <plugin></plugin> 标签,每个 plugin 标签都是一个插件

  简单的看两个插件 jetty 和 tomcat7 的配置,因为不同的插件,它的配置是不同的,所以只要记住最常用的这两个就很不错了。
  jetty 的配置:

<build>
  <finalName>test</finalName>
  <plugins>
   <plugin>
   	<groupId>org.eclipse.jetty</groupId>
   	<artifactId>jetty-maven-plugin</artifactId>
   	<version>9.3.7.v20160115</version>
   	<configuration>
   		<httpConnector>
   			<port>8081</port>
   		</httpConnector>
   		<webApp>
   			<contextPath>/${project.artifactId}</contextPath>
   			<!-- <contextPath>/test</contextPath> -->
   		</webApp>
   	</configuration>
   </plugin>
  </plugins>
</build>

  上面的 xml 文件中的代码,表示项目最后打包时项目名会被设置为 test。引入 org.eclipse.jetty 组下的 jetty 插件,版本是 9.3.7.v20160115,其端口设置为 8081(不设置的话,默认是8080),项目名是 /test。

<webApp>
	<contextPath>/${project.artifactId}</contextPath>
	<!-- <contextPath>/test</contextPath> -->
</webApp>

  单独吧 contextPath 标签拿出来讲一下,/${project.artifactId},这个语法很像 EL 表达式,这是 xml 中的表达式,表示此处的值是最大的标签 —— project 标签下的 artifactId 标签的值,也就是在这个项目中,该行和下面的注释是等价的。

  再看下 tomcat7 的配置

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
 	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>
		<path>/${project.artifactId}</path>
		<port>8080</port>
		<uriEncoding>UTF-8</uriEncoding>
		<server>tomcat7</server>
	</configuration>
</plugin>

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/114225289
今日推荐