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. P2261 [CQOI2007]余数求和 【整除分块】

    一.题面 P2261 [CQOI2007]余数求和 二.分析 参考文章:click here 对于整除分块,最重要的是弄清楚怎样求的分得的每个块的范围. 假设$ n = 10 ,k = 5 $ $$  ...

  2. 10、MyBatis教程之一对多处理

    11.一对多处理 一对多的理解: 一个老师拥有多个学生 如果对于老师这边,就是一个一对多的现象,即从一个老师下面拥有一群学生(集合)! 1.实体类编写 @Data public class Stude ...

  3. [差分][二分][贪心]luogu P3634 [APIO2012]守卫

    题面 https://www.luogu.com.cn/problem/P3634 给m个限制,可以是一段区间中必须有或者必须无忍者 最多有k个忍者,问有多少个位点一定有忍者 分析 首先用差分标记一下 ...

  4. vps-java环境配置

    昨天准备用vps打一台反序列化的机子要java环境,java环境安装了但是javac一直用不了,鼓捣了一段时间把配置文件给搞没了,只好重装vps,找了很多帖子才搞定,为了防止下次继续出现这种情况又要重 ...

  5. 微信小程序授权登录以及用户信息相关接口调整导致授权框不弹出

    前言:4月8号升级了小程序业务后提交了版本并上线.突然一个同事说体验版的点击"登录"按钮无效.当时觉得应该不会呀,这几天一直用手机调试,每天也在不停的登录授权,弹框一直有的呀.然后 ...

  6. Vulkan移植GpuImage(三)从A到C的滤镜

    前面移植了几个比较复杂的效果后,算是确认了复杂滤镜不会对框架造成比较大的改动,开始从头移植,现已把A到C的所有滤镜用vulkan的ComputeShader实现了,讲一些其中实现的过程. Averag ...

  7. Mybatis-plus 下

    Mybatis-plus 下 查询操作 1.查询单个用户 @Test public void testSelectById(){ User user = userMapper.selectById(1 ...

  8. css详解background八大属性及其含义

    background(背景) 以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin).元素边框(border).元素内边距(padding)和元素内容(c ...

  9. 【CTF】XCTF 我们的秘密是绿色的 writeup

    题目来源:SSCTF-2017 题目链接:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=1& ...

  10. 15. Vue2.4+新增属性.sync

    .sync 在vue2.4以前,父组件向子组件传值用props:子组件不能直接更改父组件传入的值,需要通过$emit触发自定义事件,通知父组件改变后的值. 父组件: <template> ...