1、5.1 Maven概览5.2 理解Maven依赖项管理模型 5.2.2 Maven仓库Maven仓库分本地存储和远程仓库。仓库分本地存储和远程仓库。Maven本地仓库是磁盘上的一个目录,本地仓库是磁盘上的一个目录,通常位于通常位于 HomeDirectory/.m2/repository。本地库类似本地缓存的角色,存。本地库类似本地缓存的角色,存储着在依赖项解析过程中下载的工件。远程仓库要通过网络访问。在储着在依赖项解析过程中下载的工件。远程仓库要通过网络访问。在STS的的“Windows”“Preferences”窗体中可对窗体中可对Maven进行各类配置。进行各类配置。依赖项解析器首先检查
2、本地仓库中的依赖项,然后检查远程仓库列表中的依依赖项解析器首先检查本地仓库中的依赖项,然后检查远程仓库列表中的依赖项,从远程下载到本地,如果远程列表中没有或下载失败,则报告一个错误。赖项,从远程下载到本地,如果远程列表中没有或下载失败,则报告一个错误。Maven全局配置文件是全局配置文件是 MavenInstallationDirectory/conf/settings.xml。该配置对所有使用该。该配置对所有使用该maven的用户都起作用,也称为主配置文件。的用户都起作用,也称为主配置文件。用户配置文件放在用户配置文件放在UserHomeDirectory/.m2/settings.xml下
3、,只对当前用户下,只对当前用户有效,且可以覆盖主配置文件的参数内容。有效,且可以覆盖主配置文件的参数内容。在STS环境中,要查看Maven的仓库信息可选择可选择“Window”“Show View”“Other”菜单路径,在弹出的菜单路径,在弹出的“Show View”对话框选择视图中,选择对话框选择视图中,选择“Maven”“Maven Repositories”的项,点击的项,点击“OK”按钮,可看到如图按钮,可看到如图5-2所示的窗体。其中,所示的窗体。其中,包含包含STS中中Maven项目的所有仓库信息。项目的所有仓库信息。5.2.3 工件和坐标工件通常被打包成包含二进制库或可执行工件
4、通常被打包成包含二进制库或可执行库的库的 JAR 文件,工件也可以是文件,工件也可以是 WAR、EAR 或其他代码捆绑类型。或其他代码捆绑类型。Maven利用操作系统利用操作系统的目录结构对仓库中的工件集进行快速索引,的目录结构对仓库中的工件集进行快速索引,索引系统通过工件的坐标惟一标识工件。索引系统通过工件的坐标惟一标识工件。Maven 坐标是一组可以惟一标识工件的坐标是一组可以惟一标识工件的三元组值。坐标包含了下列三条信息:三元组值。坐标包含了下列三条信息:组组ID:代表制造该工件的实体或组织。:代表制造该工件的实体或组织。工件工件ID:工件的名称。:工件的名称。版本:该工件的版本号。版本
5、:该工件的版本号。5.3 在STS中创建Maven Web工程maven默认的文件存放结构如下:默认的文件存放结构如下:/项目目录项目目录|pom.xml 用于用于maven的配置文件的配置文件|/src 源代码目录源代码目录|/src/main 工程源代码目录工程源代码目录|/src/main/java 工程工程java源代码目录源代码目录|/src/main/resource 工程的资源目录工程的资源目录|/src/test 单元测试目录单元测试目录|/src/test/java|/target 输出目录输出目录|/target/classes 存放编译之后的存放编译之后的class文件文
6、件1.创建Maven Web工程 选择菜单选择菜单File New Other,在弹出的对话框中选择,在弹出的对话框中选择Maven下下的的Maven Project,然后单击,然后单击Next按钮,在弹出的按钮,在弹出的New Maven Project对话框中,将列出可选项目类型,选择对话框中,将列出可选项目类型,选择artifactId 为为“maven_archetype_web”类型的列表项,单击类型的列表项,单击Next按钮。按钮。在弹出的对话框中输入和选择在弹出的对话框中输入和选择Group Id、Artifact Id、Version、Package。如图。如图5-3所示,其中
7、所示,其中Group Id用于指定项目所属组别标识;用于指定项目所属组别标识;Artifact Id定义项目中的工件标识,在图中输入了定义项目中的工件标识,在图中输入了myapp,它也将作为,它也将作为工程名称;工程名称;Version定义项目的版本;定义项目的版本;Package设定项目的包路径。设定项目的包路径。最后,可看到创建的工程目录结构。最后,可看到创建的工程目录结构。2.添加依赖关系 添加过程是先选中添加过程是先选中pom.xml文件,按鼠标右键,文件,按鼠标右键,在弹出菜单中选择在弹出菜单中选择“Maven”“Add Dependence”,可看到如图可看到如图5-5所示的对话框
8、;然后,可以在输入框所示的对话框;然后,可以在输入框中进行搜索,在列出的搜索结果中选择相应项目。成中进行搜索,在列出的搜索结果中选择相应项目。成功添加的依赖应该在工程的功添加的依赖应该在工程的Maven Dependence路路径下看到相应的径下看到相应的jar包路径。包路径。3.Maven项目的导入已存在的一个已存在的一个Maven项目,可用如下方项目,可用如下方式导入到式导入到STS环境中,选择环境中,选择FileImportMavenExisting Maven Projects,然后选择,然后选择maven项目路径,点击项目路径,点击确定即可。确定即可。5.4在STS中运行MVN命令
9、以下为常用以下为常用Maven命令。命令。mvn clean:清理上一次构建生成的文件。清理上一次构建生成的文件。mvn compile:编译项目的主源码。一般来说,是编译编译项目的主源码。一般来说,是编译src/main/java目录下的目录下的Java文件至项目输出的主文件至项目输出的主classpath目目录中。录中。mvn test:使用单元测试框架运行测试,测试代码不会被打包或使用单元测试框架运行测试,测试代码不会被打包或部署。部署。mvn package:接收编译好的代码,打包成可发布的格式,如接收编译好的代码,打包成可发布的格式,如jar、war格式等。格式等。mvn insta
10、ll:将包安装到将包安装到Maven本地仓库,供本地其他本地仓库,供本地其他Maven项目使用。项目使用。mvn site:生成项目站点。生成项目站点。5.5 Maven的多模块管理1继承关系继承关系maven默认根据目录结构来设定默认根据目录结构来设定pom的继承的继承关系,即下级目录的关系,即下级目录的pom默认继承上级目录的默认继承上级目录的pom。继承关系通过抽取公共特性,可以大幅。继承关系通过抽取公共特性,可以大幅度减少子项目的配置工作量。通过关联设置,度减少子项目的配置工作量。通过关联设置,所有父工程的配置内容都会在子工程中自动生所有父工程的配置内容都会在子工程中自动生效,除非子工
11、程有相同的配置覆盖。效,除非子工程有相同的配置覆盖。(1)父项目配置要求父工程的要求父工程的packaging设置必须是设置必须是pom类型,并在父工程设置模块列表,例如:类型,并在父工程设置模块列表,例如:ecjtu.searchsearchWeb1.0.0-SNAPSHOTpom query analyzer 这里的这里的module是目录名,描述的是子项目的相对路径。为了方便快速定位内容,是目录名,描述的是子项目的相对路径。为了方便快速定位内容,模块的目录名应当与其模块的目录名应当与其artifactId一致。一致。(2)子模块配置 ecjtu.search searchWeb 1.0.0-SNAPSHOT ecjtu.search query jar