桂林做网站电话号码,公司登记,学设计的网站推荐,自建网站流程第1章 为什么要使用Maven
1.1 获取第三方jar包 开发中需要使用到的jar包种类繁多#xff0c;获取jar包的方式都不尽相同。为了查找一个jar包找遍互联网#xff0c;身心俱疲。不仅如此#xff0c;费劲心血找到的jar包里有的时候并没有你需要的那个类#xff0c;又或者有…第1章 为什么要使用Maven
1.1 获取第三方jar包 开发中需要使用到的jar包种类繁多获取jar包的方式都不尽相同。为了查找一个jar包找遍互联网身心俱疲。不仅如此费劲心血找到的jar包里有的时候并没有你需要的那个类又或者有同名的类没有你要的方法——以不规范的方式获取的jar包也往往是不规范的。 使用Maven我们可以享受到一个完全统一规范的jar包管理体系你只需要在你的项目中以坐标的方式依赖一个jar包Maven就会自动从中央仓库进行下载并同时下载这个jar包所依赖的其他jar包——规范、完整、准确一次性解决所有问题
1.2 添加第三方jar包 在今天开发领域有大量的第三方框架和工具可以供我们使用。要使用这些jar包最简单的方法就是复制粘贴到WEB-INF目录下的lib目录下。但是这会导致每次创建一个新的工程就需要将jar包重复复制到lib目录下从而造成工作区中存在大量重复的文件。 而使用Maven后每个jar包只在本地仓库中保存一份需要jar包的工程只需要维护一个文本形式的jar包的引用——我们称之为“坐标”。不仅极大的节约了存储空间让项目更轻巧更避免了重复文件太多而造成的混乱。
1.3 jar包之间的依赖关系 jar包往往不是孤立存在的很多jar包都需要在其他jar包的支持下才能够正常工作我们称之为jar包之间的依赖关系。最典型的例子是
commons-fileupload-1.3.jar依赖于
commons-io-2.0.1.jar如果没有IO包FileUpload包就不能正常工作。 那么问题来了当你拿到一个新的从未使用过的jar包你如何得知他需要哪些jar包的支持呢如果不了解这个情况导入的jar包不够那么现有的程序将不能正常工作。再进一步当你的项目中需要用到上百个jar包时你还会人为的手工的逐一确认它们依赖的其他jar包吗这简直是不可想象的。 而引入Maven后Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来无需人工参与节约了我们大量的时间和精力。用实际例子来说明就是通过Maven导入commons-fileupload-1.3.jar后commons-io-2.0.1.jar会被自动导入程序员不必了解这个依赖关系。
1.4 处理jar包之间的冲突 上一点说的是jar包不足项目无法正常工作但其实有的时候jar包多了项目仍然无法正常工作这就是jar包之间的冲突。 举个例子我们现在有三个工程MakeFriend、HelloFriend、和Hello。MakeFriend依赖HelloFriendHelloFriend依赖Hello。而Hello依赖log4j.1.2.17.jarHelloFriend依赖log4j.1.2.14.jar。如下图所示 那么MakeFriend工程的运行时环境中该导入log4j.1.2.14.jar呢还是log4j.1.2.17.jar呢 这样的问题一个两个还可以手工解决但如果系统中存在几十上百的jar包他们之间的依赖关系会非常复杂几乎不可能手工实现依赖关系的梳理。 使用Maven就可以自动的处理jar包之间的冲突问题。因为Maven中内置了两条依赖原则最短路径者优先和先声明者优先上述问题MakeFriend工程会自动使用log4j.1.2.14.jar。
1.5 将项目拆分成多个工程模块 随着JavaEE项目的规模越来越庞大开发团队的规模也与日俱增。一个项目上千人的团队持续开发很多年对于JavaEE项目来说再正常不过。 那么我们想象一下几百上千的人开发的项目是同一个Web工程。那么架构师、项目经理该如何划分项目的模块、如何分工呢这么大的项目已经不可能通过package结构来划分模块必须将项目拆分成多个工程协同开发。多个模块工程中有的是Java工程有的是Web工程。 那么工程拆分后又如何进行互相调用和访问呢这就需要用到Maven的依赖管理机制。大家请看调查项目拆分的情况 下层模块依赖上层所以上层模块中定义的API都可以为下层所调用和访问。
1.6 实现项目的分布式部署 在实际生产环境中项目规模增加到一定程度后可能每个模块都需要运行在独立的服务器上我们称之为分布式部署这里同样需要用到Maven。 第2章 Maven 是什么
2.1 自动化构建工具 Maven是一款自动化构建工具专注服务于Java平台的项目构建和依赖管理。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁Make→Ant→
Maven→Gradle→其他…
2.2 构建的概念 构建并不是创建创建一个工程并不等于构建一个项目。 构建是一个过程就是以我们编写的Java代码、框架配置文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”去**“生产”出一个可以运行的项目**的过程。 那么项目构建的全过程中都包含哪些环节呢
2.3 构建环节 1. 清理删除以前的编译结果为重新编译做好准备。 2. 编译将Java源程序编译为字节码文件。 3. 测试针对项目中的关键点进行测试确保项目在迭代开发过程中关键点的正确性。 4. 报告在每一次测试后以标准的格式记录和展示测试结果。 5. 打包将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包Web工程对应war包。 6. 安装在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。 7. 部署将打包的结果部署到远程仓库或将war包部署到服务器上运行。 第3章 Maven 如何使用 我们来看看Maven核心程序的安装和本地仓库的必要设置。然后我们就可以编写第一个Maven程序了。
3.1 安装Maven
下载地址http://maven.apache.org/检查JAVA_HOME环境变量。Maven是使用Java开发的所以必须知道当前系统环境中JDK的安装目录。解压Maven的核心程序。将apache-maven-3.6.3-bin.zip解压到一个**非中文无空格**的目录下。例如配置环境变量。 查看Maven版本信息验证安装是否正确 3.2 第一个Maven程序
3.2.1 Maven约定的目录结构及说明
lyk├─src│ ├─main 用于存放主程序│ │ ├─java 用于存放源代码文件│ │ └─resources 存放配置文件和资源文件│ └─test 用于存放测试程序│ ├─java│ └─resources|├─pom.xml 用来导入依赖坐标|└─target3.2.2 通过命令行的方式运行Maven程序
在电脑的任意位置创建Hello目录文件夹在Hello目录中创建src目录和pom.xml文件在src目录中创建main和test目录在main和test目录中分别创建java和resources目录将以下内容复制到pom.xml文件中
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.lyk/groupIdartifactIdHello/artifactIdversion1.0-SNAPSHOT/versiondependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependencies/project编写主程序在src/main/java目录下新建文件Hello.java
public class Hello {public String sayHello(String name){return Hello name!;}
}运行以下常用的Maven命令
打开cmd命令行进入Hello项目根目录(pom.xml文件所在目录)执行mvn compile命令查看根目录变化mvn clean命令然后再次查看根目录变化
mvn compile命令, 查看根目录变化
mvn test-compile命令 查看target目录的变化
mvn test命令查看target目录变化
mvn package命令,查看target目录变化
mvn install命令 查看本地仓库的目录变化注意运行Maven命令时一定要进入pom.xml文件所在的目录
3.3 在Eclipse中使用Maven
3.3.1 在Eclipse中配置Maven Eclipse中默认自带Maven插件但是通常我们不使用自带的Maven而是使用自己安装的在Eclipse中配置Maven的步骤如下
点击Eclipse中的Window→Preferences 点开Maven前面的箭头选择Installations点击Add… 点击Directory…选择我们安装的Maven核心程序的根目录然后点击Finish 勾上添加的Maven核心程序 选择Maven下的User Settings在全局设置哪儿点击Browse…选择Maven核心程序的配置文件settings.xml本地仓库会自动变为我们在settings.xml文件中设置的路径 3.3.2 在Eclipse中创建Maven项目 1. 点击File→New→Maven Project弹出如下窗口 点击Next配置坐标GAV及打包方式然后点击Finish 创建完工程之后发现默认的JDK的编译版本是1.5在Maven的核心配置文件settings.xml文件中添加以下配置将编译版本改为1.8重启Eclipse即可
profileidjdk-1.8/idactivationactiveByDefaulttrue/activeByDefaultjdk1.8/jdk/activationpropertiesmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetmaven.compiler.compilerVersion1.8/maven.compiler.compilerVersion/properties
/profile参照3.2配置pom.xml文件创建主程序和测试程序代码在工程名Hello或pom.xml上右键→Run As运行Maven项目 3.3.3 在Eclipse中导入Maven项目
点击File→Import… 第一次导入手动创建的Maven项目时由于项目中没有Eclipse生成的一些文件使用方式一导入时Eclipse认为它不是一个工程 所以必须通过方式二导入到Eclipse中 导入到Eclipse中之后就会生成一些Eclipse能识别的文件有了这些Eclipse能识别的文件之后以后再往Eclipse中导入的时候选择方式一和方式二都可以
3.4 在Idea中使用Maven
3.4.1 在Idea中创建Maven项目
点击New Project→Maven 点击Next项目名称Hello配置要继承的模块如果直接创建的是Project不存在这一项、坐标GAV、路径。不同的Idea版本可能有所差别这里使用的是2019.3.3的版本 点击Finish即可创建成功创建完工程之后在settings→BuildExecusionDevelopment→Compiler→Java Compiler中发现默认的JDK的编译版本是1.5在Maven的核心配置文件settings.xml文件中添加以下配置将编译版本改为1.8重启Idea即可
profileidjdk-1.8/idactivationactiveByDefaulttrue/activeByDefaultjdk1.8/jdk/activationpropertiesmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetmaven.compiler.compilerVersion1.8/maven.compiler.compilerVersion/properties/profile配置Maven的核心配置文件pom.xml
?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.lyk/groupIdartifactIdHello/artifactIdversion1.0-SNAPSHOT/versiondependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependencies/project编写主代码在src/main/java目录下新建文件Hello.java
package com.bigdata.maven;
public class Hello {public String sayHello(String name){return Hello name!;}
}编写测试代码在/src/test/java目录下新建测试文件HelloTest.java
package com.bigdata.maven;
import org.junit.Test;
public class HelloTest {Testpublic void testHello(){Hello hello new Hello();String maven hello.sayHello(Maven);System.out.println(maven);}
}使用Maven的方式运行Maven工程 3.4.2 在Idea中配置Maven Idea中也自带Maven插件而且我们也可以给自带的Maven插件进行配置所以我们可以使用自带的Maven也可以使用我们安装的Maven核心程序
配置自带的Maven插件Idea自带的Maven在Idea的安装目录的plugins目录中 在自带的Maven里配置了本地仓库之后打开Idea之后会发现本地仓库自动变成了我们设置的仓库 设置Maven自动导包 配置我们自己安装的Maven点击工具栏中的Settings 3.5 Maven 联网问题
配置本地仓库Maven的核心程序并不包含具体功能仅负责宏观调度。具体功能由插件来完成。Maven核心程序会到本地仓库中查找插件。如果本地仓库中没有就会从远程中央仓库下载。此时如果不能上网则无法执行Maven的具体功能。为了解决这个问题我们可以将Maven的本地仓库指向一个在联网情况下下载好的目录。Maven默认的本地仓库~\.m2\repository目录。
Tips~表示当前用户的家目录。
Maven的核心配置文件位置apache-maven-3.6.3\conf\settings.xml为了以后下载jar包方便配置阿里云镜像 将以下标签配置到标签里面
mirroridnexus-aliyun/idmirrorOfcentral/mirrorOfnameNexus aliyun/nameurlhttp://maven.aliyun.com/nexus/content/groups/public/url
/mirror第4章 Maven的核心概念
4.1 POM Project Object Model项目对象模型。 将Java工程的相关信息封装为对象作为便于操作和管理的模型。 Maven工程的核心配置。可以说学习Maven就是学习pom.xml文件中的配置。
4.2 约定的目录结构
约定配置编码。意思就是能用配置解决的问题就不编码能基于约定的就不进行配置。而Maven正是因为指定了特定文件保存的目录才能够对我们的Java工程进行自动化构建。
4.3 插件和目标
Maven的核心仅仅定义了抽象的生命周期具体的任务都是交由插件完成的。每个插件都能实现多个功能每个功能就是一个插件目标。Maven的生命周期与插件目标相互绑定以完成某个具体的构建任务。
例如compile就是插件maven-compiler-plugin的一个功能pre-clean是插件maven-clean-plugin的一个目标。
4.4 生命周期
4.4.1 什么是Maven的生命周期 Maven生命周期定义了各个构建环节的执行顺序有了这个清单Maven就可以自动化的执行构建命令了。
Maven有三套相互独立的生命周期分别是
Clean Lifecycle在进行真正的构建之前进行一些清理工作。Default Lifecycle构建的核心部分编译测试打包安装部署等等。Site Lifecycle生成项目报告站点发布站点。 再次强调一下它们是相互独立的你可以仅仅调用clean来清理工作目录仅仅调用site来生成站点。也可以直接运行 mvn clean install site 运行所有这三套生命周期。 每套生命周期都由一组阶段(Phase)组成我们平时在命令行输入的命令总会对应于一个特定的阶段。比如运行mvn clean这个clean是Clean生命周期的一个阶段。有Clean生命周期也有clean阶段。
clean生命周期 Clean生命周期一共包含了三个阶段
pre-clean 执行一些需要在clean之前完成的工作clean 移除所有上一次构建生成的文件post-clean 执行一些需要在clean之后立刻完成的工作
Site生命周期
pre-site 执行一些需要在生成站点文档之前完成的工作site 生成项目的站点文档post-site 执行一些需要在生成站点文档之后完成的工作并且为部署做准备site-deploy 将生成的站点文档部署到特定的服务器上 这里经常用到的是site阶段和site-deploy阶段用以生成和发布Maven站点这可是Maven相当强大的功能Manager比较喜欢文档及统计数据自动生成。
Default生命周期 Default生命周期是Maven生命周期中最重要的一个绝大部分工作都发生在这个生命周期中。这里只解释一些比较重要和常用的阶段
validategenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resources 复制并处理资源文件至目标目录准备打包。**font stylecolor:#FF0000;compile/font** 编译项目的源代码。process-classesgenerate-test-sourcesprocess-test-sourcesgenerate-test-resourcesprocess-test-resources 复制并处理资源文件至目标测试目录。**font stylecolor:#FF0000;test-compile/font** 编译测试源代码。process-test-classes**font stylecolor:#FF0000;test/font**font stylecolor:#FF0000; /font使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。prepare-package**font stylecolor:#FF0000;package/font** 接受编译好的代码打包成可发布的格式如JAR。pre-integration-testintegration-testpost-integration-testverify**install**将包安装至本地仓库以让其它项目依赖。 deploy将最终的包复制到远程的仓库以让其它开发人员与项目共享或部署到服务器上运行。
4.5 生命周期与自动化构建 运行任何一个阶段的时候它前面的所有阶段都会被运行例如我们运行mvn install 的时候代码会被编译测试打包。 这就是Maven为什么能够自动执行构建过程的各个环节的原因。 此外Maven的插件机制是完全依赖Maven的生命周期的因此理解生命周期至关重要。
4.6 仓库 分类
本地仓库为当前本机电脑上的所有Maven工程服务。远程仓库
[1] 私服架设在当前局域网环境下为当前局域网范围内的所有Maven工程服务。 [2]中央仓库架设在Internet上为全世界所有Maven工程服务。
[3]中央仓库的镜像架设在各个大洲为中央仓库分担流量。减轻中央仓库的压力同时更快的响应用户请求。 仓库中的文件 Maven的插件 我们自己开发的项目的模块 第三方框架或工具的jar包 ※不管是什么样的jar包在仓库中都是按照坐标生成目录结构所以可以通过统一的方式查询或依赖。
4.7 Maven的坐标 使用如下三个向量在Maven的仓库中唯一的确定一个Maven工程。
groupId公司或组织的域名倒序当前项目名称artifactId当前项目的模块名称version当前模块的版本
groupIdcom.lyk/groupId
artifactIdHello/artifactId
version1.0-SNAPSHOT/version如何通过坐标到仓库中查找jar包 将三个向量连起来:com.lykHello1.0-SNAPSHOT 以连起来的字符串作为目录结构到仓库中查找com/bigdata/maven/Hello/1.0-SNAPSHOT/Hello-1.0-SNAPSHOT.jar
4.8 第二个Maven工程
File-new-新建Module模型创建HelloFriend工程 在pom.xml配置文件中配置当前工程依赖Hello
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.lyk/groupIdartifactIdHelloFriend/artifactIdversion1.0-SNAPSHOT/versionnameArchetype - HelloFriend/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdcom.lyk/groupIdartifactIdHello/artifactIdversion1.0-SNAPSHOT/versionscopecompile/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependencies
/project
主程序。在src/main/java目录下新建文件HelloFriend.java
package com.lyk;import come.lyk.Hello;public class HelloFriend {public String sayHelloToFriend(String name){Hello hello new Hello();String str hello.sayHello(name) I am this.getMyName();return str;}public String getMyName(){return 小花;}
}测试程序。在/src/test/java目录下新建测试文件HelloFriendTest.java
import com.lyk.HelloFriend;
import org.junit.Test;
public class HelloFriendTest {Testpublic void testHelloFriend(){HelloFriend helloFriend new HelloFriend();String results helloFriend.sayHelloToFriend(lyk);System.out.println(results);}
}关键对Hello的依赖 这里Hello就是我们的第一个Maven工程现在HelloFriend对它有依赖。任何一个Maven工程会根据坐标到本地仓库中去查找它所依赖的jar包。如果能够找到则可以正常工作否则就不行。
4.9 依赖管理 当A jar包需要用到B jar包中的类时我们就说A对B有依赖。例如
commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。
通过第二个Maven工程我们已经看到当前工程会到本地仓库中根据坐标查找它所依赖的jar包。 配置的基本形式是使用dependency标签指定目标jar包的坐标。例如
dependency!--坐标--groupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version!--依赖的范围--scopetest/scope/dependency如果A依赖BB依赖C那么A→B和B→C都是直接依赖而A→C是间接依赖。
4.9.1 依赖的范围
compile默认就是这个范围
main目录下的Java代码**可以**访问这个范围的依赖test目录下的Java代码**可以**访问这个范围的依赖
部署到Tomcat服务器上运行时**要**放在WEB-INF的lib目录下
例如对Hello的依赖。主程序、测试程序和服务器运行时都需要用到。
test
main目录下的Java代码**不能**访问这个范围的依赖test目录下的Java代码**可以**访问这个范围的依赖
部署到Tomcat服务器上运行时**不要**放在WEB-INF的lib目录下
例如对junit的依赖。仅仅是测试程序部分需要。
provided
main目录下的Java代码**可以**访问这个范围的依赖test目录下的Java代码**可以**访问这个范围的依赖
部署到Tomcat服务器上运行时**不要**放在WEB-INF的lib目录下
例如servlet-api在服务器上运行时Servlet容器会提供相关API所以部署的时候不需要。
其他 runtime、import、system等。
各个依赖范围的作用可以概括为下图 HelloFriend项目在src/main目录下写方法添加Test注解会报错。
4.9.2 依赖的传递性
当存在间接依赖的情况时主工程对间接依赖的jar可以访问吗这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问即依赖范围是compile时才具有传递性。例如
Maven工程依赖范围对A的可见性ABCcompile√Dtest×Eprovided×
HelloFriend项目注释junit依赖报错原因是依赖范围是test传递不可见。
同时修改Hello项目的test改成compile测试完恢复。
4.9.3 依赖的原则解决jar包冲突
路径最短者优先 路径相同时先声明者优先 这里“声明”的先后顺序指的是dependency标签配置的先后顺序。
4.9.4 依赖的排除 有的时候为了确保程序正确可以将有可能重复的间接依赖排除。请看如下的例子
假设当前工程为MakeFriend直接依赖OurFriends。OurFriends依赖commons-logging的1.1.1对于MakeFriend来说是间接依赖。当前工程MakeFriend直接依赖commons-logging1.1.2
加入exclusions配置后可以在依赖OurFriends的时候排除版本为1.1.1的commons-logging的间接依赖 4.9.5 统一管理目标jar包的版本 以对Spring的jar包依赖为例Spring的每一个版本中都包含spring-contextspringmvc等jar包。我们应该导入版本一致的Spring jar包而不是使用5.3.1的spring-context的同时使用5.3.2的springmvc。
!--统一管理当前模块的jar包的版本--
propertiesspring.version5.3.1/spring.version
/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-orm/artifactIdversion${spring.version}/version/dependency
/dependencies第5章 继承
5.1 为什么需要继承机制 由于非compile范围的依赖信息是不能在“依赖链”中传递的所以有需要的工程只能单独配置。例如 此时如果项目需要将各个模块的junit版本统一为4.13.1那么到各个工程中手动修改无疑是非常不可取的。使用继承机制就可以将这样的依赖信息统一提取到父工程模块中进行统一管理。
5.2 创建父工程 父工程的打包方式为pom父工程只需要保留pom.xml文件即可
groupIdcom.bigdata.maven/groupId
artifactIdParent/artifactId
packagingpom/packaging
version1.0-SNAPSHOT/version5.3 在子工程中引用父工程 Hello项目和HelloFriend项目添加
!-- 继承 --
parent!-- 父工程坐标 --groupIdcom.lyk/groupIdartifactIdParent/artifactIdversion1.0-SNAPSHOT/version!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径--relativePath../Parent/pom.xml/relativePath/parent此时如果子工程的groupId和version如果和父工程重复则可以删除。
5.4 在父工程中管理依赖 将
Parent项目中的dependencies标签用dependencyManagement标签括起来
!--依赖管理--
dependencyManagementdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependencies
/dependencyManagement在子项目中重新指定需要的依赖删除范围和版本号
dependencygroupIdjunit/groupIdartifactIdjunit/artifactId
/dependency第6章 聚合
6.1 为什么要使用聚合 将多个工程拆分为模块后需要手动逐个安装到仓库后依赖才能够生效。修改源码后也需要逐个手动进行clean操作。而使用了聚合之后就可以批量进行Maven工程的安装、清理工作。
6.2 如何配置聚合 在总的聚合工程Parent中使用modules/module标签组合指定模块工程的相对路径即可
!--聚合--
modulesmodule../MakeFriend/modulemodule../OurFriends/modulemodule../HelloFriend/modulemodule../Hello/module
/modulesMaven可以根据各个模块的继承和依赖关系自动选择安装的顺序
第7章 通过Maven创建Web工程
7.1 通过Eclipse创建Maven版Web工程
创建简单的Maven工程打包方式为war包 创建完成之后因缺少web.xml文件工程出现小红叉 在工程上右键→Build Path→Configure Build Path… 点击Project Facets欺骗Eclipse当前工程不是Web工程点击应用 再告诉Eclipse当前工程是一个Web工程点击应用并关闭 发现MavenWeb工程小红叉消失并出现了WebContext目录 在WebContext下创建index.jsp页面并添加Tomcat库 在MavenWeb上右键→Run As→Run on Server部署到Tomcat上运行
7.2 通过Idea创建Maven版Web工程 1. 点击New Project使用webapp模板 项目名称MavenWeb 确定maven配置信息 src/main目录下新建java和resources目录src目录下新建testsrc/test目录下新建java和resources目录 部署到Tomcat上运行
第8章 Maven库下载网站 我们可以到 http://mvnrepository.com 或 http://search.maven.org 搜索需要的jar包的依赖信息。