maven简单入门

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系统变量

    image-01.png

  • 通过 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 的安装目录下):

image-02.png

打开 settings.xml文件,配置如下:

image-03.png

全局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工程的目录结构

image-04.png

作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。进入 src 目录后,我们发现它里面的目录结构如下:

image-05.png

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,然后按照图片配置

    image-06.png

创建一个webapp示例

  • 新建一个工程,勾选使用骨架

    image-07.png

  • 填写好相关项目名、版本号之类的,然后就创建工程成功

  • 注意创建好的项目目录是不完整的,这些就要自己添加,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更新图标更新一下,便于加载或者下载。

posted @ 2021-03-09 15:46  他是医你的药  阅读(61)  评论(0)    收藏  举报