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更新图标更新一下,便于加载或者下载。

maven简单入门的更多相关文章

  1. maven 简单入门教学实战手册

    Maven那点事儿(Eclipse版)   前言: 由于最近工作学习,总是能碰到Maven的源码.虽然平时工作并不使用Maven,但是为了学习一些源码,还是必须要了解下.这篇文章不是一个全面的Mave ...

  2. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  3. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  4. maven3实战之maven使用入门(使用archetype生成项目骨架)

    maven3实战之maven使用入门(使用archetype生成项目骨架) ---------- maven提供了archetype以帮助我们快速勾勒出项目骨架.以Hello World为例,我们使用 ...

  5. Maven——快速入门手册(学习记录)

    前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...

  6. springboot 学习之路 1(简单入门)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  7. shiro的简单入门使用

    这里只是测试登录认证,没有web模块,没有连接数据库,用户密码放在shiro.ini配置中,密码没有加密处理,简单入门. 基于maven 先看目录结构 测试结果 pom.xml <?xml ve ...

  8. Flyway 简单入门教程

    原文地址:Flyway 简单入门教程 博客地址:http://www.extlight.com 一.前言 Flyway 是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式.Flyway 可以 ...

  9. mavenProfile文件配置和简单入门

    1什么是MavenProfile 在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产 ...

随机推荐

  1. 精通模块化JavaScript

    近日读了一本名为<精通模块化JavaScript>的书,并记录了其中的精髓. 一.模块化思维 精通模块化开发并不是指要遵循一套定义明确的规则,而是指能够将自己置身于使用者的角度,为可能即将 ...

  2. css行高

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  3. 对控制器类型“StudentController”的操作“Edit”的当前请求在下列操作方法之间不明确:

    "/"应用程序中的服务器错误. 对控制器类型"StudentController"的操作"Edit"的当前请求在下列操作方法之间不明确:类型 ...

  4. RabbitMQ 入门 (Go) - 3. 模拟传感器,生成数据并发布

    现在,我们需要模拟传感器,生成数据,并发布到 RabbitMQ. 建立传感器项目 在 GOPATH src 下建立文件夹 sensors,使用 go mod init 初始化,并创建 main.go. ...

  5. java例题_06 最大公约数&最小公倍数

    1 /*6 [程序 6 求最大公约数及最小公倍数] 2 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数. 3 程序分析:利用辗除法. 4 */ 5 6 /*分析 7 * ======== ...

  6. C++ 虚函数的内部实现

    C++ 虚函数的内部实现 虚函数看起来是个玄之又玄的东西,但其实特别简单!了解了虚函数的内部实现,关于虚函数的各种问题都不在话下啦! 1. 知识储备 阅读这篇文章,你需要事先了解以下几个概念: 什么是 ...

  7. 关于生产环境改用G1垃圾收集器的思考

    背景 由于我们的业务量非常大,响应延迟要求高.目前沿用的老的ParNew+CMS已经不能支撑业务的需求.平均一台机器在1个月内有1次秒级别的stop the world.对系统来说是个巨大的隐患.所以 ...

  8. CPU 权限划分

    Intel的CPU将特权级别分为4个级别:RING0,RING1,RING2,RING3.Windows只使用其中的两个级别RING0和RING3,RING0只给操作系统用,RING3谁都能用.如果普 ...

  9. 201871030126-王会娟 实验二 个人项目—《D{0-1} KP》项目报告

    项目 内容 课程班级博客链接 https://home.cnblogs.com/u/wanghuijuan815 这个作业要求链接 https://www.cnblogs.com/nwnu-daizh ...

  10. [面试仓库]CSS面试题汇总-图文样式篇

      图文样式这,我们挑了一个最常见的来说:line-height继承问题.从三个方面来考虑: 如果是具体的数值,则继承该数值 body{ font-size:32px; line-height:40p ...