zoukankan      html  css  js  c++  java
  • Maven教程(一)

    现在的java项目一般都是通过Maven管理jar包与版本,本身属于依赖倒置,通过maven更方便的管理jar包。

    当然,在安装maven之前需要安装配置好JDK,这部分省略。

    配置maven的运行环境。

    第一步

    首先在http://maven.apache.org/download.cgi 上找到maven安装包。解压到硬盘你乐意的位置。

    然后记录maven的路径 ,例如我的是:D:mavenFileapache-maven-3.5.3

    第二步

    我们开始配置环境变量。总共有三个环境变量需要配置。分别是M2(运行的bin目录)、M2_HOME(运行的文件夹位置)、MAVEN_OPTS(运行的配置信息)。例如我的配置就是。

    M2_HOME:D:mavenFileapache-maven-3.5.3

    M2:D:mavenFileapache-maven-3.5.3in

    MAVEN_OPTS: -Xms256m -Xmx512m

    第三步

    在你的Path环境变量下添加bin目录的路径,win7下也可以使用;%M2%代替

    第四步

    在CMD界面,运行 mvn --version。可查看当前maven的版本,安装成功后可知。

    创建maven项目

    在eclipse创建mave项目非常简单。

    在项目管理的框内,右键创建 other.

    搜索maven 创建maven Project。

    你可以直接下一步来填写所需信息创建mavan。(我建议你先读完下面的pom讲解再创建maven)

    也可以在途中选中create a simple project.来创建含有父类pom的maven.

    POM讲解

    POM 代表工程对象模型。它是使用 Maven 工作时的基本组建,是一个 xml 文件。它被放在工程根目录下,文件命名为 pom.xml。

    POM 包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。

    POM 也包含了目标和插件。

    在创建 POM 之前,我们首先确定工程组(groupId),及其名称(artifactId)和版本,在仓库中这些属性是工程的唯一标识。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.dhh</groupId>
      <artifactId>p1802</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <name>blog</name>
      <description>mySelf blog</description>
    </project>
    modelVersion:当前POM.xml的版本格式,这个是用来后台识别
    groupId:公司组织表示,建议使用公司域名。也是jar包被mave打包后的存放路径
    artifactId:项目名,你的当前项目名。
    version:版本号。

    所有的 POM 都继承自一个父 POM(无论是否显式定义了这个父 POM)。父 POM 也被称作 Super POM,它包含了一些可以被继承的默认设置。
    继承可以让我们避免一些不必要的通用性配置。可用CMD在项目文件夹下,运行:mvn help:effective-pom。查看父类pom的配置。


    Maven生命周期

    maven的生命周期一般如下:
    1资源拷贝(本阶段可以自定义需要拷贝的资源)
    2编译(本阶段完成源码编译)
    3打包配置(根据pom创建管理jar包)
    4安装(使用调用安装工程包)

     当 Maven 开始构建工程,会按照所定义的阶段序列的顺序执行每个阶段注册的目标。Maven 有以下三个标准的生命周期:

      clean

      default(or build)

      site

      其中clean包含pre-clean、clean 和 post-clean 阶段。

      我们执行clean操作可以直接使用工具也可以CMD在pom所在目录下执行mvn post-clean

      

      default(or build)的生命周期阶段过多。如下表,不用细看,出错再看

    生命周期阶段描述
    validate 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到。
    initialize 初始化构建状态,例如设置属性。
    generate-sources 生成编译阶段需要包含的任何源码文件。
    process-sources 处理源代码,例如,过滤任何值(filter any value)。
    generate-resources 生成工程包中需要包含的资源文件。
    process-resources 拷贝和处理资源文件到目的目录中,为打包阶段做准备。
    compile 编译工程源码。
    process-classes 处理编译生成的文件,例如 Java Class 字节码的加强和优化。
    generate-test-sources 生成编译阶段需要包含的任何测试源代码。
    process-test-sources 处理测试源代码,例如,过滤任何值(filter any values)。
    test-compile 编译测试源代码到测试目的目录。
    process-test-classes 处理测试代码文件编译后生成的文件。
    test 使用适当的单元测试框架(例如JUnit)运行测试。
    prepare-package 在真正打包之前,为准备打包执行任何必要的操作。
    package 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件。
    pre-integration-test 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。
    integration-test 处理和部署必须的工程包到集成测试能够运行的环境中。
    post-integration-test 在集成测试被执行后执行必要的操作。例如,清理环境。
    verify 运行检查操作来验证工程包是有效的,并满足质量要求。
    install 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。
    deploy 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。

      这个阶段我们执行的命令是:mvn compile

      Maven Site 插件一般用来创建新的报告文档、部署站点等。执行命令为mvn site

    仓库

     maven仓库指的是存放文件所用的地方。分三种

      本地仓库。本地自己使用。

      中央仓库。项目组自己使用。

      远程仓库。远程调用。

    本地仓库

    Maven 本地仓库是机器上的一个文件夹。它在你第一次运行任何 maven 命令的时候创建。

    Maven 本地仓库保存你的工程的所有依赖(library jar、plugin jar 等)。当你运行一次 Maven 构建,Maven 会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程机器上的依赖文件。

    Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
       http://maven.apache.org/xsd/settings-1.0.0.xsd">
          <localRepository>C:/MyLocalRepository</localRepository>
    </settings>

    中央仓库

    Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

    中央仓库的关键概念:

    • 这个仓库由 Maven 社区管理。
    • 不需要配置。
    • 需要通过网络才能访问。

    要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。好像已经废了不太好用

    远程仓库

    如果 Maven 在中央仓库中也找不到依赖的库文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

    项目构建

    首先我们按之前所说创建一个maven
    然后我们修改pom。xml为
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
          <groupId>com.companyname.projectgroup</groupId>
          <artifactId>project</artifactId>
          <version>1.0</version>
          <dependencies>
             <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
             </dependency>
          </dependencies>  
    </project>

    你可以看到项目自动导入了jar包

    然后你加入如下代码导入servlet

          <dependency>
                <groupId>javax.servlet</groupId>
                     <artifactId>javax.servlet-api</artifactId>
                     <version>3.0.1</version>
                 <scope>compile</scope>
             </dependency>

    最后导入SpringMVC的Pom.xml如下

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
          <groupId>com.companyname.projectgroup</groupId>
          <artifactId>project</artifactId>
          <version>1.0</version>
          <dependencies>
             <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
             </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                     <artifactId>javax.servlet-api</artifactId>
                     <version>3.0.1</version>
                 <scope>compile</scope>
             </dependency>
             <dependency>
                <groupId>org.springframework</groupId>
               <artifactId>spring-web</artifactId>
                <version>4.1.2.RELEASE</version>
                <scope>compile</scope>
              </dependency>
              <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
               <version>4.1.2.RELEASE</version>
               <scope>compile</scope>
             </dependency>
          </dependencies>  
    </project>
     
  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/blackdeng/p/8969841.html
Copyright © 2011-2022 走看看