开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术:IDE与Maven对比】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/80/detail/15957
IDE与Maven对比
内容介绍:
一、 举例解析
二、 Servlet_idea
三、 Maven 工程
一、 举例解析
举一个例子来对比使用 IDE 和 Maven 管理项目的不同,在此例子中使用的代码是上一章使用的 Servlet,同样的代码使用 ide 来编译打包运行一次,再用 Maven 来做同样的事情,通过对比不难发现,使用 Maven 来做同样的事情会要简单很多,而且使用 Maven 的过程可以使得项目与 ide无关,最后是一个中立的项目,无论是使用
ideal 还是 eklipps 都可以来编译打包运行项目。
二、 Servlet_idea
在 SpringFramework 目录下有两个工程,一个是 Servlet_idea,另一个是
Servlet_Maven,分别是用 idea 和 Maven 来管理的工程。
如图:
首先来看一下Servlet_idea,在 Servlet_idea下面有一个Servlet_idea.iml 的文件,此文件是idea的工程文件,右键单击此文件选择Import‘Servletidea’Module,把 idea 的工程文件引入到环境中,引入之后可看到在工程下面目录的颜色发生了改变,如下:
因为定义了其 java 代码在哪个目录下面,定义了外部的 html 在哪些目录底下,因此其对应的文件发生了改变。接下来看里面的代码,会发现在代码中间有大量的红色的不认识的关键字,如下:
这些红色的关键字是 Servlet 的一些类名和接口名,在此项目中间使用的是最新版的 Tomcat 识别名,在jave1被捐给阿帕奇以后,其名字从 javax 改成了 jakarta,因此如上可看到包名上面改成了 jakarta.servlet,目前 Servlet 的类名都是红色的,说明它不认识,需要在工程里把 Servlet 包引入进来,在其中选择了 ProjectStructure,整个的工程都是新导入的,原来设定的ide可能与在机器上安装的ide不一样,因此需要切换一下,在此机器上安装的是 java1版本的 SDK。然后再看Medules,在其中间,可以看到 Servletm_idea,原来的例子是在 Tomcat10.6 上运行的,目前机器上 idea 没有指定环境,可以看到红色的是不认识的,正是因为红色的不认识的 Tomcat 环境造成了所有 Servlet 所有的接口名字在此项目中是红色的、不认识的,因此要去设定 Tomcat的环境,因为在 ide中间要把此项目运行起来需要依赖于Tomcat,所以在 RunConfiguration中间增加一个新的 RunConfiguration, 在其中找到 Tomcat Server 版本,这里去定义其应用服务器 Application Server,要指定其 Tomcat 装在哪个目录下面,然后起名字,目前Tomcat 是把它放在 8080 端口,然后 ide 就知道其 Tomcat 在何处,回到 famedproductstructure 可以看到 Tomcat10.06 其在何处,可以在内文件名中看到其颜色从红色变成了正常的颜色,说明就已经正式了。
接下来来看 face,因为项目中间包含了 html,也包含了 web.html,因此需要定义 faced 去描述这些东西在何处,在 faced 中间定义了 web.html 的位置在何处,需要告诉它 java 的源代码在何处,然后再定义其 Artifacts, Artifacts 是在 idea 中间最后要达到 Tomcat 去的东西,此处要定义一个最终打包要打成的东西Artifactor,里面有很多选项,暂时选择的是WebAppficationExploded, Exploded 是以一个目录的方式拷贝过去的,方便观察运行情况,如果选择 Artifact 就会打包成 Web,因
此在调试状态下都会选择 WebAppficationExploed 模式。
在其中定义里面的内容来自一个 From Modules,从 Servlet_ideModule 通过,其实是在 Modules 中间的内容按照各种格式打包成了 Web文件,这部分无需操作,默认是OK。在此处修改一下 Artifacts 的入境,默认是在 java1 中,把其改到当前的 Project 下面,这样方面在 ide中看到在建造中间 Artifacts 被产生了,否则不方面查看,定义好项目所依赖的架包、所依赖的外部环境、定义了 web.html 在何处、定义了 Artifacts 如何打包、然后需要把定义好的 Artifacts 部署到应用服务器上。
接下来是定义其部署情况,在 Configuration 中间,打开其对应的,定义好的 Tomcat Server,然后再 Deployment 里面加入上述定义的 Artifacts,如此操作就
可对整个项目进行编译和打包了。
build完成以后出现了一个our目录,定义了 Artifacts的目录在本工程里面,所以最后可看到编译完成的 java.xml文件以及 html以及Web.html都会拷贝到outArtifacts
目录下面,如下:
此上就上打包之前所需的结构,然后选择定义的 Tomcat,在 Server 中间可以看到 Tomcat 已经定义了要部署的,然后将其运行起来,Tomcat 运行起来之后,可以通过浏览器去访问运行起来的工程,首先先看Welcome,Welcome 是OK的,然后
再看一下 get,其它部分不看,因为在前面的内容已经提到过此部分。
三、 Maven 工程
接下来来看 Maven 的工程,Maven的工程在此目录下面有一个文件Tomcat.Servlet 文件,首先先把 Tomcat 关闭,因为 Maven 的 Tomcat 也是在8080端口,不关闭会造成两个矛盾,关闭了 Tomcat 服务器之后可看到页面显示无法访问,回来 Maven 工程,Maven 的工程在 Servlet 的目录下面有一个 Open in 文件,这是前面提到的 Maven 的定义文件,在其中可以选择 ideasMaven.Project, 把Tom 文件中定义的内容引入到 ide 里面去,引进去之后可看到在 pom 文件中定义的内容自然的存储在 ProjectStructure, 首先可以看到所有的目录颜色都发生了改变,而且在其中因为 depends 是在pom 中定义的,所以它没有红色的部分,其自动会识别 Servlet 类接口。
接下来来看 pom 文件中的内容,pom 文件中可以看到它引入了 dependency,如下:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
cartifactId>servlet-api</artifactId><version>3.0-alpha-1</version><scope>provided</scope></dependency></dependencies>
<!-- 定义构建的方法-->
<build>
<sourceDirectory>src/main/java</sourcedirectory><plugins>
<plugin>
<groupId>org.apache.naven.plugins</groupd>
<artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration>
<source>1.8</source><target>1.8</target>
因为其引入使得工程中间的类和接口就会被识别出来,另外两个部分可以看到是有两个插件,两个对应,第一个是正常的,第1个是正常的用于 build in,第2个则是用于启动 Tomcat 的插件,这样会使得编译打包形成的 Web 文件可以在一个 Tomcat 的插件中运行起来,这就是第二个插件所起到的作用,此处插件是 Tomcat7 的插件,所以可看到代码中间其包名依然是旧的包名,然后来看一下其在ideaProjectStructure 的内容,此处无需做任何操作,通过引入Platform以后可看到 Modules,Artifacts,Facts 都定义完成了,这就是根据 pom 文件中的内容去产生的在 idea 中间的内容,此处无需做任何的修改,当把其引入成为一个 Maven 的工程以后,可以看到在右边出现了 ServletMaven,点进去以后可以看到 Maven 的生命周期,lifestyle 和其插件。
首先运行其生命周期下面的 package,再点击其编译打包,然后使用插件中间的 Tomcat7 插件(引入进来的),使用其 run,然后把编译打包完成的工程在 Tomcat 中运行起来,运行起来后可以去浏览器中看其运行效果,其运行效果和
前面idea 的运行效果是一样的此处不再述。