2019独角兽企业重金招聘Python工程师标准>>>
项目简介
这是一个集成IDEA+ Tomcat + Maven构建的简易Javaweb多模块项目,目标是以Java构建后端,tomcat作为服务器,实现一些简单的web页面,在实践过程中学习JavaWeb基础知识
(一)基本项目模块搭建
流程
File->New->Project,选择Maven新建项目,输入项目名称及父模块ArtifactId等信息,finish创建完成
创建完毕后项目结构如下,因为该项目是作为一个Parent project存在的,删除不需要的src包
下一步,创建项目的子模块。右击项目,New->Module,选择Maven,勾选上Create from archetype以及下方的webapp模板(不是上面那个,不要选错了),即通过maven中的模板工程创建模块包,此包存放web相关代码,我的包名为space。注:如果使用的是阿里云Maven镜像,模板列表会有些不同,这个模板按字母排序在列表下面
New->Module,同样选择Maven,创建一个子模块,用于存放给其他包调用的核心类Java代码,因此不需要通过模板创建,直接next即可,包名core
这样项目的两个包web包与核心类包就创建完成了,但是它们之间还没形成依赖关系,在space包中还不能调用core包中的代码,我们打开space的pom.xml文件,在其中添加core包依赖,包的三个属性值即为创建模块时输入的信息
在依赖输入完成后,使用快捷键Ctrl+shift+alt+U,可以很直观的查看到space包的依赖,说明依赖导入成功
一个使用Maven搭建的Javaweb多模块项目的基础结构就搭建完成啦,项目结构如下。后续会加入更多代码,让项目逐渐跑起来
知识点
1. Maven基本概念:
Maven是基于项目对象模型(POM)来管理项目的构建,报告和文档的软件项目管理工具,其核心功能是合理叙述项目间的依赖关系,在pom.xml通过配置xml管理源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。在上述项目中可以看到,父模块及每个子模块都有一个pom.xml文件,各个模块只负责做自己的功能,然后在pom.xml中通过依赖形成联系,这样整个Project具有非常清晰的架构,便于项目管理
2. Maven仓库:
在space包的依赖中可以看到,除了我们手动添加的core包依赖以外,还有一个junit项目依赖,这个就是来源于Maven仓库,我们在构建一个工程时,通常需要引入一些外部项目依赖,而通过Maven依赖管理,无需手动添加jar包或输入繁杂的地址,只需要在pom.xml文件中配置要依赖项目的坐标,Maven便会自动从本地仓库或远程公共仓库导入jar包。Maven仓库分为三类,
本地仓库:Maven从远程下载到本地的jar包会统一到一个目录下管理,这个目录默认为C:\Users\Administrator\.m2\repository,如下图所示的Maven设置中,也可以勾选override更改为自定义目录。本地仓库的好处是可以将本地的依赖包统一起来管理,在构建新项目需要添加依赖时,无需每次都重复从远程下载,直接从本地调用即可
远程公共仓库:也称为中央仓库,地址为http://repo1.maven.org/maven2,这个仓库是由Maven自己维护的,其中有大量常用的类库和开源项目构件,在pom.xml中配置依赖后,Maven会首先从本地仓库中检查,如果本地库中没有,就默认从远程库中下载
内部中心库:一般由公司内部设立,为公司内部共享使用,既可以作为公司内部构件协作和存档,也可作为公共类库镜像缓存,减少对外部的访问频率,主要目的是统一项目jar版本,保证公司项目组内每个人使用的版本都是一样的。
3. Maven坐标
在pom.xml文件配置依赖坐标,便可定位到相应的类库,坐标常用属性如下,前三个为必要的基本坐标
groupId:当前引入项目所隶属的项目,一般为组织标识
artifactId:项目/模块名称
version:项目版本号
packaging:项目打包方式,可以为war,jar,pom,maven-plugin等
scope:依赖的范围
4. Maven生命周期
Maven对项目所有的构建过程进行了抽象和统一,包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤,整个过程称之为Maven的生命周期
Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有执行顺序的,后面的阶段依赖于前面的阶段。
clean生命周期:清理项目,包含三个phase。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
default生命周期:构建项目,重要的phase如下。
1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)Package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
site生命周期:建立和发布项目站点,phase如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
输入 mvn 命令 即可执行相应阶段,如下图所示mvn clean
5. Maven阿里云镜像
https://my.oschina.net/u/4057396/blog/3020117
参考文章
Maven官网:https://maven.apache.org/
Maven多模块项目构建:https://www.cnblogs.com/wangmingshun/p/6383576.html
Maven的生命周期:http://www.cnblogs.com/tenghoo/p/maven_life_cycle.html
心得体会(碎碎念)
做一个学习项目时一定要从第一天就开始用博客记录,及时总结,记录碰到的错误以及解决方案,可以知道自己每天都做了些什么,帮助理清思路加深理解和记忆,做完才有酣畅淋漓的完成感和成就感,总之,写博客很重要,要坚持哇