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. Java例题_30 在已经排好序的数组中插入值

    1 /*30 [程序 30 插入数字] 2 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 3 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插 ...

  2. HTML总结篇

    一.HTML基本结构标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. Async Cow Python 七牛异步SDK

    # Async Cow Python 七牛异步SDK > gitee链接 >github链接本SDK基于官方SDK改造而成,但又对其进行了进一步封装,简化了相关操作例如:- 1.不需要使用 ...

  4. MongoDB中“$”操作符表达式汇总

    MongoDB中"$"操作符表达式汇总 查询 比较操作 $eq 语法:{ : { $eq: } } 释义:匹配等于(=)指定值的文档 举例: 查询age = 20的文档: db.p ...

  5. 全网最详细的Linux命令系列-nl命令

    nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...

  6. HTML(一):语法结构

    HTML语法规范 基本语法概述 HTML标签是由尖括号包围的关键词,例如<html>. 2HTML标签通常是成对出现的,例如<html>和</html> ,我们称为 ...

  7. OO_Unit2 关于性能优化与测试的那些事

    OO_Unit2 关于性能优化与测试的那些事 OO的第2单元到本周也就正式完结了.尽管这个单元的主旋律是多线程,但"面向对象"的基本思想仍然是我们一切架构与优化的出发点与前提.因此 ...

  8. zk都有哪些使用场景?

    (1)分布式协调:这个其实是zk很经典的一个用法,简单来说,就好比,你A系统发送个请求到mq,然后B消息消费之后处理了.那A系统如何知道B系统的处理结果?用zk就可以实现分布式系统之间的协调工作.A系 ...

  9. manjaro找不到默认键盘布局

    1 问题描述 manjaro安装fcitx后,没有默认的键盘布局,不是这样: 而是: 2 解决方案 解决方案在启动fcitx时就已经有提示了: 缺少了libjson-c这个库,直接使用pacman搜索 ...

  10. Go-27-import导包

    import 导入包 包的搜索顺序: import ( "fmt" "net/http" "mypkg" ) 编译器会根据上面指定的相对路径 ...