maven简单部署webapp项目流程及注意事项
maven了解
简介:
Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM: Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标 (goal)的逻辑。
maven的依赖管理:
maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文件,再通过 pom.xml 文件中的坐标,到一个专门用于”存放 jar 包的仓库”(maven 仓库)中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行。
Maven的本地安装
Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,比如 D:\software\maven 下面。
解压后目录结构如下:
bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身运行所需的一些 jar 包
至此我们的 maven 软件就可以使用了,前提是你的电脑上之前已经安装并配置好了 JDK。安装好jdk及其环境配置
-
在系统属性、环境变量中配置MAVEN_HOME系统变量
通过 mvn -v命令检查 maven 是否安装成功,看到 maven 的版本为 3.5.2 及 java 版本为 1.8 即为安装成功。打开 cmd 命令,输入 mvn –v命令,看输出信息符合即为安装成功。
Maven仓库
Maven仓库的分类
- maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。(初次下载真的是慢得想哭)
- 本地仓库 :用来存储从远程仓库或*仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。
- 远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
- *仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是*仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件
Maven本地仓库的配置
在 MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置(maven 的安装目录下):
打开 settings.xml文件,配置如下:
全局setting与用户setting
maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。
在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project
项目,它作为 maven 的全局配置。
如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:${user.dir}
/.m2/settings.xml 目录中,${user.dir} 指 windows 中的用户目录。
maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。
Maven工程认知
Maven工程的目录结构
作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。进入 src 目录后,我们发现它里面的目录结构如下:
src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置,编译后的 class 文件会输出到此目录
pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录。
在后面我们自己在idea上创建项目时,有时候需要我们自己补齐相关目录。
idea上开发maven项目
idea上的相关配置
-
打开file,在setting处搜索maven,然后按照图片配置
创建一个webapp示例
-
新建一个工程,勾选使用骨架
填写好相关项目名、版本号之类的,然后就创建工程成功
-
注意创建好的项目目录是不完整的,这些就要自己添加,maven推荐的目录结构如下
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── group
│ │ ├── controller
│ │ │ ├── HomeController.java
│ │ │ └── PersonController.java
│ │ ├── dao
│ │ │ └── PersonDao.java
│ │ └── model
│ │ └── Person.java
│ ├── resources
│ │ ├── db.properties
│ │ ├── log4j.xml
│ │ └── META-INF
│ │ └── persistence.xml
│ └── webapp
│ ├── index.html
│ ├── META-INF
│ │ ├── context.xml
│ │ └── MANIFEST.MF
│ ├── resources
│ │ └── css
│ │ └── screen.css
│ └── WEB-INF
│ ├── spring
│ │ ├── app
│ │ │ ├── controllers.xml
│ │ │ └── servlet-context.xml
│ │ ├── db.xml
│ │ └── root-context.xml
│ ├── views
│ │ ├── edit.jsp
│ │ ├── home.jsp
│ │ └── list.jsp
│ └── web.xml
└── test
├── java
│ └── group
│ ├── controller
│ │ ├── DataInitializer.java
│ │ ├── HomeControllerTest.java
│ │ └── PersonControllerTest.java
│ └── dao
│ └── PersonDaoTest.java
└── resources
├── db.properties
├── log4j.xml
├── test-context.xml
└── test-db.xml 创建目录时有时要手动将其添加为资源文件夹(右击,mark directory as)
-
如果只是想写个简单的servlet,并使用tomcat7的话,就要在pom.xml中添加相应配置
-
首先是插件,即
<bulid></bulid>
下的<plugins><plugin></plugin></plugins>
中添加JDK插件和tomcat插件<!-- tomcat7插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/login</path>
<port>80</port>
</configuration>
</plugin>
<!-- jdk -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<encoding>utf-8</encoding>
<target>1.8</target>
</configuration>
</plugin>先写个
<artifactId>
然后有提示跟着点就简单很多了,tomcat7和maven-compiler。注意这里要在<configuration>
中添加详细配置信息,比如说tomcat插件的端口、路径之类的。 -
接下来写jar包的相关坐标,比如先导入servlet需要的jar包
<dependencies><dependency></dependency></dependencies>
下添加jar包相关信息,依旧是先写<artifactId>
再跟着提示信息填。<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.47</version>
<scope>provided</scope>
</dependency>常常会发现,导入的jar包会有冲突,比如上面的两个servlet,那么就可以添加
<scope>
属性为provided来改变其作用范围,仅在编译期有效。 在我们写代码时,如果提示没有相关jar包,可以利用idea的提示进行查找以及一键添加。
改变了pom.xml后,可以点击idea右上角的maven更新图标更新一下,便于加载或者下载。
-