现在租房网工程所依赖的第三方库都是手动下载,然后拷贝到 WebContent/WEB-INF/lib 目录下的,Eclipse会自动天生一个 Web App Libraries 用户库:

我们现在就连续基于这个版本来改造它吧。

改造思路

实际上,我们可以利用三种办法来改造租房网工程:

jsp页面警告Java Web轻松学47  应用Maven改革租房网工程 Java

第一种办法是直策应用我们独立安装的Maven,在命令行工具中利用 archetype:generate 这个插件和目标新建一个Maven工程(可以参考这篇文章,不过,我们可以选择 maven-archetype-webapp 这个模板),然后用Eclipse导入该Maven工程(可以参考这篇文章),末了将我们的Java源码、JSP页面、各种基于XML的配置文件拷贝到相应位置,并在POM文件中添加依赖。
第二种办法当然便是在Eclipse中利用集成好的Maven直接创建Maven工程,不过,任然须要把原有的Java源码、JSP页面、各种基于XML的配置文件拷贝到相应位置,并在POM文件中添加依赖。
第三种办法是最省事的,在Eclipse中可以直接将原有工程转换为Maven工程,我们就先容这种办法吧。
将原有工程转换为Maven工程

如何将原有工程转换为Maven工程呢?很大略,Eclipse中有相应的命令菜单。

把稳,我这里利用的是我自己独立安装的Maven,关于如何集成独立安装的Maven,可以参考这篇文章。

大家可以选中要转换的工程,弹出其右键菜单,里面既有该命令:Configure -> Convert to Maven Project :

实行该命令之后,会弹出 Create new POM 的对话框,须要你输入一些参数:

这里,我直策应用默认的,实际可以修正成符合我们须要的,Maven的POM模型将所有项目/工程都视为一个构件,利用英文单词 artifact :

n.人工制品; (尤指具有历史或文化代价的) 手工制品,手工艺品;

可以看到此单词的含义也很有人文气息,把软件算作是一种工艺品,也是挺恰当的。
事实上,好的软件的确看起来令民气旷神怡。
当然,目前海内能够称得上软件艺术品和软件艺术大师的真的是百里挑一!

下面的几个参数便是对一个 artifact 的描述,个中,前三个唯一标识了一个 artifact ,简称 GAV:

Group Id:相称于描述这个工艺品是出自谁的手笔。
一样平常都会是一个团队,常日用URL的逆序,彷佛Java包名一样,比如 com.xxx.yyy;Artifact Id:相称于工艺品的名称;Version:很明显是版本的意思,Maven中把那种尚在开拓中,未正式发布的版本视作 SNAPSHOT 版本,即快照版本,往后再详细先容;Packaging:这相称于是该工艺品的存在形式,一样平常 Web 工程/项目是打成 war 包的形式,Java工程/项目是打成 jar 包的形式。
它们实际上都是压缩包,可以利用压缩/解压缩工具比如RAR等打开查看里面的内容。
还有其他形式比如 pom 等,往后再详细先容;后面的名称和描述可以不填,属于一样平常描述性信息。

输入参数之后,点击 Finish 按钮即可,可能转换过程须要等待一段韶光,末了转换后的工程构造变成:

最大的变革便是,原来的 Web App Libraries 这个用户库不见了,从而使得我们的Java源码涌现找不到Spring干系类的缺点,只管 WebContent/WEB-INF/lib 目录下还有Spring的各个JAR包。

还有便是多了 Deployed Resources 节点和 target 节点,以及最主要的POM文件 pom.xml 。

Deployed Resources 节点实际上是Eclipse专门为Maven工程解析出来而形成的,可以看到其下包含了 WebContent 的内容。

target 目录实际上是Maven工程默认的构建输出目录。

而POM文件的内容是这样的:

4.0.0 house-renter house-renter 0.0.1-SNAPSHOT war src maven-compiler-plugin 3.8.0 1.8 1.8 maven-war-plugin 3.2.1 WebContent

可以看到,转换过来的Maven工程的POM文件中并没有 这个标签,我们须要自己添加。

还有,Java的源码目录是 src ,而不是标准的 src/main/java ,也没有 src/test/java 等目录,当然,这些都是可以修正的。

末了,可以看到 标签下有编译器和打war包的插件,以及它们的配置参数,这些都是Maven实行构建、打包等动作的时候要用到的插件。

利用Maven引入依赖

这篇文章我们提到过,我们可以在POM文件中的 标签下添加依赖库,而依赖的groupId和artifactId可以在 https://mvnrepository.com/ 这个网站中搜索到。

我们在该网站中输入 spring 关键字,得到如下搜索结果:

可以看到,Spring Framework 几个JAR包都被搜索出来,我们先选择 Spring Context 这个JAR包:

然后,选择它的截止到撰写本文时的最新版本 5.2.1.RELEASE :

底下文本框中会有 Spring Context 这个JAR包的Maven依赖配置的样板,直接复制到我们工程的POM文件中即可,当然我们先要添加一个 标签:

org.springframework spring-context 5.2.1.RELEASE

然后,保存POM文件,这时候,奇迹发生了,Eclipse自然天生了一个 Maven Dependencies 节点,Java源码中的缺点也少了许多,但还有一些缺点,是关于Spring MVC的:

为什么我只添加了一个 spring-context 的JAR包,该 Maven Dependencies 节点下回有 spring-core 等JAR包呢?答案很大略,便是 spring-context 这个JAR包依赖于 spring-core 等JAR包啊,以是Maven会把这些JAR包都下载下来,这可以在POM文件的 Dependency Hierarchy 视图中看得更清楚:

实际上,Maven必须进行这种依赖的解析,由于可能有多个库依赖于同一个但不同版本的库,这就须要用户来决定终极利用哪个版本的库。

好,现在我们再用同样的步骤添加 Spring MVC 的JAR包即可:

org.springframework spring-context 5.2.1.RELEASE org.springframework spring-webmvc 5.2.1.RELEASE

这时候,我们的Java源码的缺点已经全部消逝,但JSP页面还有一个警告,是关于JSTL标签库的,我们须要引入JSTL干系的JAR包:

org.apache.taglibs taglibs-standard-impl 1.2.5 org.apache.taglibs taglibs-standard-spec 1.2.5

现在,我们可以把 WebContent/WEB-INF/lib 目录下的所有第三方依赖库都删掉了。

验证

我们可以在Eclipse中实行Maven工具的干系命令,比如 mvn package 这个命令即可实行项目的构建、打包等动作,参考这篇文章。

然后,在Eclipse中新建一个Server,它指向我们安装的 Tomcat,在该Server中添加我们的租房网运用,然后发布它,启动Tomcat,这些内容可以参考这篇文章。

我们在浏览器中考试测验访问登录页面:

http://localhost:8080/house-renter/login.html

然后,访问其他链接,该当没有什么问题,改造成功!

将Java源码目录改为 src/main/java

实在,现在已经把租房网工程改为Maven工程了,往后添加依赖就可以直接在POM文件中进行了,而不必再手动去下载和配置依赖了。

但是,直接转换过来的Maven工程有一个不敷,便是它的Java源码目录仍旧是之前Java Web工程默认的 src 目录,而不是Maven工程的标准目录 src/main/java 。

这个源码目录实在是可以修正的,这就须要用到 Java Build Path 这个配置了。

可以有多种办法打开这个 Java Build Path 配置,可以从工程的右键菜单中打开:

弹出工程的属性对话框,可以看到这个 Java Build Path 配置的 Source 页内的源码目录只有一个 src :

现在,点击右真个 Add Folder.. 按钮,可以添加新的源码目录:

选中 src 目录,然后再点击底部的 Create New Folder... 按钮,然后在弹出的对话框中输入目录名,比如 main 。

然后再选中刚创建的 main 目录,在其下创建 java 目录。

末了,只勾选 java 目录:

点击底部的 OK 按钮:

此时, Java Build Path 这个配置对话框顶部会涌现缺点提示,说是源码目录不能是嵌套的,而底部的 Apply 按钮和 Apply and Close 按钮也是灰色的,不能点击。

现在,我们可以选中 src 这个源码目录,然后点击右真个 Remove 这个按钮,这样就把它删除掉了,末了点击 Apply and Close 按钮,我们的工程构造变成:

但是,目前 src/main/java 目录中还没有任何源代码,以是也导致了一些缺点,我们须要把原来 src 目录下的 Java源码复制到此目录下才行,复制后是这样的:

现在,可以把原来的 src 目录下的 houserenter 删除了。

然而,在Eclipse中的租房网工程中仍旧没有任何变革,只须要刷新一下该项目即可,选中该项目并按 F5 键,或利用该项目的右键菜单 -> Refresh :

现在,src/main/java 这个节点变成可以展开的,展开它即可看到实际上是由我们拷贝过去的Java源码,缺点也随之消逝了。

但是我们还差末了一步,便是在POM文件中的 标签下的

src

这行代码删除,否则,Maven -> Update Project... 会报如下缺点:

删除POM文件中的关于源码目录的该行配置之后,Java Build Path 这个配置对话框变成:

会提示 src/test/java 不存在,以是我们须要在 src 目录下再建立该目录,我们直接在文件系统中建立并刷新工程即可。

总结

现在,我们的租房网工程就变成比较标准的Maven工程了。

实际上,原来的 build 目录也可以删除了,现在的构建输出目录是 target 目录了。

实行 Maven build... 命令,输入目标 package ,运行即可构建我们的租房网工程了,输出目录 target 下面也有我们往后支配运用须要的WAR包:

我们可以利用压缩/解压缩工具,比如RAR,打开该WAR包,可以看到里面的内容紧张是 WebContent 节点的内容,而天生的Java类的字节码文件会自动拷贝到 WEB-INF/classes 目录下。