zoukankan      html  css  js  c++  java
  • maven笔记(maven使用与安装,eclipse中maven的配置,maven项目的创建)

    一、初识maven

    1.maven是什么?

    他是一个项目管理器,配置好pom配置文件后,maven会管理项目的依赖文件等,当项目用到外部jar包时,maven帮助我们去网上下载并打包发到Tomcat中。maven有一个仓库的概念,他会打下载的
    jar文件存储到这个仓库中,这个仓库默认在我的文档里,项目启动时也会根据pom配置文件去查找所需要的文件,当找不到时就从网上在线下载

    2.maven中必须要明白的两个配置名称的作用
    1)groupId:部门名称+项目名称
    2)ArtifactId:一个项目组中得某一个模块

    注意:当你执行mvn install时会发现,groupID中名字以“.”分开创建文件夹作为项目文件夹,ArtifactId创建的文件夹放在以groupId为名创建的文件夹中作为模块。
    3.maven中得命令
    mvn compile:编译Java代码,把编译后的class文件放入target
    mvn test:执行测试代码
    mvn clean:清空target文件夹
    mvn package:打包项目

    mvn install:安装模块到机器,当B模块想要引用A模块的功能类时,B只要在pom文件dependency中通过groupID和artifictid来引用a已经安装的jar包就好了
    注意:如何修改包工厂(仓库)的位置,修改maven安装根目录下的conf文件夹下的setting配置文件中的<localRepositorles>,把这个标签的路劲改成你自己的放工厂的路径位置

    二、手动开始一个maven项目

    1.从网上下载maven包(http://maven.apache.org/download.cgi)并解压

    配置环境,新创建一个环境变量命名为H2_HOME,里面的内容为下载的maven包的解压目录

    在path目录中加入maven中得bin的路径。

    2.创建一个项目,并命名为maven-ch1里面的目录结构如下:

    src

     --main

        --java

           --zttc

              --itta

                 --maven

      --test

         --java

            --zttc

               --itta

                  --maven

    3.在main文件夹下的maven下编写Java文件,代码如下

    package zttc.itat.maven;
    public class HelloWorld
    {
    	public String sayHello(String name)
    	{
    		return "hello:"+name;
    		
    	}
    }
    

     4.在test文件夹下的maven下编写测试代码

    package zttc.itat.maven;
    import org.junit.*;
    import static org.junit.Assert.*;
    
    public class HelloTest
    {
    	@Test
    	public void testSayHello(){
    		HelloWorld hw=new HelloWorld();
    		String str=hw.sayHello("maven");
    		assertEquals(str,"hello:maven");
    		
    	}
    
    }
    

     5.在与src文件夹同级目录下创建pom.xml

    <?xml version="1.0" encoding="utf-8"?>
    <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>zttc.itat.maven</groupId>
      <artifactId>maven-ch01</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.10</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    

     6.打开dos客户端并切换到本项目文件夹下,输入 mvn compile后开始编译,得到target文件夹,里面会有对应的编译后的class类,执行mvn test后会执行测试,并在target文件下生成测试文档。

    7.引用自己开发的模块

    (1)复制maven-ch1并重命名为maven-ch2,删除main中的源代码。

    (2)切换到ch1中输入mvn install,把那个包安装到本地jar包仓库中(默认在我的文档的respository)

    (3)在ch2中的pom文件里加入如下代码

    <dependency>
          <groupId>zttc.itat.maven</groupId>
          <artifactId>maven-ch01</artifactId>
          <version>0.0.1-SNAPSHOT</version>
        </dependency>

    (3)终端切换到ch2,执行mvn test发现源代码虽然没有,但是maven为我们自动引入了ch1中的jar包并测试成功。

     三、修改仓库位置

    1.创建一个文件夹代替默认的.M2存放jar包,我放在了F:/java/maven/repository

    2.修改D:apache-maven-3.5.0-binapache-maven-3.5.0conf下的setting文件,添加如下在<settings>标签下添加<localRepository>F:javamaven eposi</localRepository>

    四、在eclipse中创建maven项目

    1.安装maven到eclipse,即修改默认的maven为自己的maven。

    依次选择window->prefrences->maven,选择installation后点击add添加自己的maven,如下图

    修改setting为自己下载并解压maven的D:apache-maven-3.5.0-binapache-maven-3.5.0confi中得setting

    3.创建maven项目,创建后的目录结构如下

     五、maven的依赖特性

    1.依赖的范围,用<scope>标签包裹其依赖范围的定义

    test:指的是测试范围有效,在编译和打包时都不会使用这个依赖

    compile:编译范围有效,在编译和打包时都会将依赖存储进去

    provide:在编译和测试的过程有效,最后加入war包时不加入

    runtime:运行时依赖,编译时不依赖。

    2.依赖的传递

    当依赖级别相同时,谁先依赖就依赖谁,当依赖的层数不同时,按短的依赖,例如直接依赖会优先于间接依赖

    六、依赖的聚合和继承

    1.聚合:一个项目分多个模块,如果要运行整个项目,则需要每个模块都去编译,太过繁琐,是否可以一下子全部编译并通过呢。答案是可以的,只需要在与各模块所在的根目录的同级文件夹下创建一个pom文件,里面放如下内容就可通过编译这个pom来编译运行测试。

    <!-- 导入了三个模块,把这三个模块聚合在一起了 -->
        <modules>
            <!-- 聚合是模块的位置 -->
            <module>../user-core</module>   //这里就是各个模块的相对位置了
            <module>../user-log</module>
            <module>../user-service</module>
        </modules>

    2.继承:就是每个模块基本都会用到Junit,log4j什么的,他们之间的这些dependencies就会重复而且他们之间还会互相依赖,pom中得一些常量什么的也没必要到处配置,解决的办法就是在1的pom里定义好这些,每个模块的pom继承这个父pom。

    根目录的pom里填如下内容。

    <url>http://maven.apache.org</url>
    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.10</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>4.1.10.Final</version>
                </dependency>
    …… </dependencyManagement>



    教程地址:http://www.icoolxue.com/album/show/45

  • 相关阅读:
    jdk1.8 操作List<Map> 多个map 具有相同的key 进行分组合并重组数据
    js获取字符中连续的值
    Java线程ABA问题
    Oracle递归查询语句
    Oracle学习笔记表连接(十六)
    Docker For Mac没有docker0网桥
    awk 和 sed (Stream Editor)
    WARNING: firstResult/maxResults specified with collection fetch; applying in memory!
    iptables编写规则
    InnoDB Next-Key Lock
  • 原文地址:https://www.cnblogs.com/softzrp/p/6690744.html
Copyright © 2011-2022 走看看