maven在eclipse中创建web工程

在 Eclipse 里使用 Maven

通常,创建一个简单 Maven 项目目录相对完整,若需额外的文件目录自己手动创建就好了,不推荐使用模板创建maven项目

一. 在 Eclipse 里创建web工程

  

创建好之后 会有一点小错误(缺少 web.xml ),需要配置之后报错就会消失

生成的 Maven 工程里没有 Tomcat 的运行环境

Eclipse 解决办法:在 BulidPath 里添加

Maven 解决办法:pom.xml 配置依赖包servlet 和 jsp-api  注意 provided

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

项目结构:

二.  pom.xml 的基本了解

Maven里的配置文件主要就两个: settings.xml , 和 pom.xml

settings.xml: 主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;

pom.xml:主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。

1. 基础配置:

<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">
	<!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
	<modelVersion>4.0.0</modelVersion>

	<!-- 公司或组织的唯一标志(包结构),并且配置时生成的路径也是由此生成 -->
	<groupId>cn.jq.maventest</groupId>
	<!-- 项目名称,一个groupId下若有多个项目,通过artifactId来区分 -->
	<artifactId>maventest</artifactId>
	<!-- 本项目/工程的版本号 snopshot: 处于开发阶段的测试版本,不稳定的 release: 发布版本,稳定的 -->
	<version>0.0.1-SNAPSHOT</version>
	<!-- 打包机制:jar(普通java工程),war(web工程),pom(父工程) -->
	<packaging>war</packaging>

	<!-- 定义本项目的依赖关系 -->
	<dependencies>
		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<!-- maven中的依赖关系有作用域(scope)的限制。 -->  
			<scope>provided</scope>
		</dependency>
	</dependencies>
</project>

2. scope 的分类:

scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围,不常用,通过其他可以代替)

compile:默认是compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。主程序有效, 测试程序有效, 要打包, 要部署

test:表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。主程序无效, 测试程序有效, 不要打包, 不部署, 比较典型的如junit。

runntime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。另外runntime的依赖通常和optional搭配使用,optional为true。我可以用A实现,也可以用B实现。

provided:意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。主程序有效, 测试程序有效, 不被打包, 不要部署

system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

scope的依赖传递

A依赖B,B依赖C。当前项目为A,只当B在A项目中的scope,那么c在A中的scope是如何得知呢?

当C是test或者provided时,C直接被丢弃,A不依赖C;(排除传递依赖)

否则A依赖C,C的scope继承与B的scope

 

3. properties 标签在 pom.xml 定义一些常量, 方便管理,通过 el 表达式访问。

	<properties>
		<!-- 自定义标签名 -->
		<maven.servlet.version>3.1.0</maven.servlet.version>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<!-- 直接引用pom定义的常量  -->
			<version>${maven.servlet.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

三. 在 Eclipse 里使用Maven命令

猜你喜欢

转载自blog.csdn.net/qq_42402854/article/details/81814218