• (一)Maven基础及第一个Maven工程


    一、Maven介绍

    • ANT/Maven/gradle是一个项目管理工具,它包含了一项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Manangement System),和用来运行定义在生命周期阶段中插件目标的逻辑。

    • Maven是面向技术层面,针对Java开发项目管理工具,它提供了构建工具所提供功能的超集,除了构建功能之外,Maven还可以管理项目结构、管理依赖关系、生成报告、生成Web站点、有助于团队成员之间的交流与协作。

    二、声明周期

    三、安装及其第一个Maven工程

       3.1:Maven的安装


        A:解压压缩包到workspace某一目录中。

        B:配置环境变量
            
            M2_HOME:D:WorkSpace_Eclipseapache-maven-3.2.5(类似Java_Home)

            path:    加入D:WorkSpace_Eclipseapache-maven-3.2.5in

        C:cmd窗口:输出mvn -v:如果有提示信息,表示安装成功。


      3.2:目录结构:

        bin

        conf目录:setting.xml:Maven的配置文件。


            A:更改Maven的本地仓库的路径:

            本地仓库:Maven用于存放从网络中下载的jar与插件的存放目录。修改 conf目录下的setting.xml
            <localRepository>D:/WorkSpace_Eclipse/apache-maven-repository</localRepository>

      3.3:Maven与IDE(MyEclipse)结合:



        A:更改MyElipse的默认Maven。Preferences---->MyEclipse---->Maven4MyEclipse--->Installing

        B:更改MyElipse的默认Maven。Preferences---->MyEclipse---->Maven4MyEclipse--->Global Setting File:更改为Maven目录的settting.xml的路径。

        C:更改MyElipse的默认Maven。Preferences---->MyEclipse---->Maven4MyEclipse中的jdk路径。

      3.4:可以MyEclipse创建一个简单的Maven工程。


        约定大于配置。(目录结构)

        Maven 提倡“约定优于配置”(Convention Over Configuration),
        这是 Maven最核心的设计理念之一。

        原因之一就是使用约定可以大量减少配置。

        a) 源码目录为 src/main/java/            【相当于java工程的src目录】

        b) 源码资源目录为 src/main/resources/        :用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面

        c) 测试目录为 src/test/java/

        d) 测试资源目录为 src/test/resources/

        e) 编译输出目录为 target/classes/【bin/WEB-INF/classes】

        f) 打包方式为 jar/war

        g) 包输出目录为 target/

        h) 超级pom

            超级 pom 定义以上的目录结构、核心插件设定版本。Maven 设定核心插件的原因,

            是防止由于插件版本的变化而造成构建的不稳定。

            遵循约定虽然损失了一定的灵活性,用户不能随意安排目录结构,但是却能减少配置。

            更重要的是,遵循约定能够帮用户遵循构建标准。个性往往意味着牺牲通用性,

            意味着增加无谓的复杂度。

        工程目录(main中的java/resource与test中的java/resource是源文件夹,不是文件夹。)

            src
                main
                    java:            放java的源文件
                    resources        放配置文件。
                    webapp
                        WEB-INF
                        web.xml
                test
                    java            放测试javar的源文件
                    resources        放测试的的配置文件。


                pom.xml                工程模型配置文件。

                    
            target    
                classes

    四、坐标(GAV)

     上面的例子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.shyroke</groupId>
      <artifactId>maven01</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>maven01</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
     
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    • GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构
    • ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
    • version:版本定义,SNAPSHOT--->Alpha--->Beta--->Release----GA

          SNAPSHOT:内部开发版本

          Alpha:   内部公测版本

          Beta:    对外公开的测试版本

          Release: 可以使用的版本

          GA:     稳定版本
    • <packaging>jar|war|pom</packaging>                运行maven的package命令时,该工程会打包为一个java
    • groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。

    五、坐标与依赖

    • Maven工程中的依赖:从本地仓库中寻找。如果本地仓库中寻找不到,再找网络仓库(中央仓库)中寻找。

        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
        </dependencies>

      5.1  案例

    • 将一个写好代码的maven01工程打包,在maven02工程中通过坐标引用这个工程的代码。

    • 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.shyroke</groupId>
        <artifactId>maven01</artifactId>
        <version>2.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
      
        <name>maven01</name>
        <url>http://maven.apache.org</url>
      
        <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
       
      
        <dependencies>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
          </dependency>
        </dependencies>
      </project>
      •   这个工程使用install命令 ,会在本地仓库中生成这个工程的文件,如果没有使用install命令则另一个工程无法引用这个工程。
      • maven01工程的gav唯一标识了这个工程,也就是说在maven01工程中的pom.xml文件中引入这个工程的gav就可以使用maven01工程的类的方法。

     

    • 如上图,在maven02工程中成功引用了maven01的类。
  • 相关阅读:
    12.4
    12.3
    学期总结
    12.20 期末考试总结
    12.18 准备
    12.17 CSS学习
    12.16 CSS学习
    12.15 CSS学习
    12.14 学习总结
    12.11 AJAX的基础知识
  • 原文地址:https://www.cnblogs.com/shyroke/p/7286179.html
Copyright © 2020-2023  润新知