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. python 常用库收集

    读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz写的最富盛名的http库.每个Python程序员都 ...

  2. 想了很久,一道Microsoft的笔试题目 —— Reversing Linked List

    Reversing Linked List Given a constant K and a singly linked list L, you are supposed to reverse the ...

  3. Asp.Net Core 学习随笔

    1.依赖注入 configureServices 中 //单例 services.AddSingleton<i,c>(); //http请求内 services.AddScopend< ...

  4. 开源一个比雪花算法更好用的ID生成算法(雪花漂移)

    比雪花算法更好用的ID生成算法(单机或分布式唯一ID) 转载及版权声明 本人从未在博客园之外的网站,发表过本算法长文,其它网站所现文章,均属他人拷贝之作. 所有拷贝之作,均须保留项目开源链接,否则禁止 ...

  5. InlineHook

    前言 IATHOOK局限性较大,当我们想HOOK一个普通函数,并不是API,或者IAT表里并没有这个API函数(有可能他自己LoadLibrary,自己加载的),那我们根本就从导入表中找不到这个函数, ...

  6. PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1001 A+B Format (20 分) 凌宸1642 题目描述: Calculate a+b and output the sum i ...

  7. [状压DP]关灯问题II

    关 灯 问 题 I I 关灯问题II 关灯问题II 题目描述 现有n盏灯,以及 m m m个按钮.每个按钮可以同时控制这 n n n盏灯--按下了第 i i i个按钮,对于所有的灯都有一个效果.按下i ...

  8. Day1---Java 基本数据类型 - 四类八种 --九五小庞

    一.Java四大数据类型分类 1.整型 byte .short .int .long 2.浮点型 float . double 3.字符型 char 4.布尔型 boolean 二.八种基本数据类型 ...

  9. 轻松理解 Spring AOP

    目录 Spring AOP 简介 Spring AOP 的基本概念 面向切面编程 AOP 的目的 AOP 术语和流程 术语 流程 五大通知执行顺序 例子 图例 实际的代码 使用 Spring AOP ...

  10. TCP 和 UDP 协议简介

    一.TCP TCP(Transmission Control Protocol),传输控制协议,对"传输.发送.通信"进行"控制"的协议,它充分地实现了数据传输 ...