一、初识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文件,代码如下

  1. package zttc.itat.maven;
  2. public class HelloWorld
  3. {
  4. public String sayHello(String name)
  5. {
  6. return "hello:"+name;
  7.  
  8. }
  9. }

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

  1. package zttc.itat.maven;
  2. import org.junit.*;
  3. import static org.junit.Assert.*;
  4.  
  5. public class HelloTest
  6. {
  7. @Test
  8. public void testSayHello(){
  9. HelloWorld hw=new HelloWorld();
  10. String str=hw.sayHello("maven");
  11. assertEquals(str,"hello:maven");
  12.  
  13. }
  14.  
  15. }

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>zttc.itat.maven</groupId>
  6. <artifactId>maven-ch01</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <dependencies>
  9. <dependency>
  10. <groupId>junit</groupId>
  11. <artifactId>junit</artifactId>
  12. <version>4.10</version>
  13. <scope>test</scope>
  14. </dependency>
  15. </dependencies>
  16. </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文件里加入如下代码

  1. <dependency>
  2. <groupId>zttc.itat.maven</groupId>
  3. <artifactId>maven-ch01</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </dependency>

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

 三、修改仓库位置

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

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

四、在eclipse中创建maven项目

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

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

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

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

 五、maven的依赖特性

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

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

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

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

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

2.依赖的传递

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

六、依赖的聚合和继承

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

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

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

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

  1. <url>http://maven.apache.org</url>
  2. <dependencyManagement>
  3. <dependencies>
  4. <dependency>
  5. <groupId>junit</groupId>
  6. <artifactId>junit</artifactId>
  7. <version>4.10</version>
  8. <scope>test</scope>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.hibernate</groupId>
  12. <artifactId>hibernate-core</artifactId>
  13. <version>4.1.10.Final</version>
  14. </dependency>
    ……
  15. </dependencyManagement>

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

maven笔记(maven使用与安装,eclipse中maven的配置,maven项目的创建)的更多相关文章

  1. Maven学习总结(12)——eclipse中构建多模块maven项目

    摘要:本文要用Maven来构建一个多模块的web项目 项目结构如下: system-parent      |----pom.xml      |----system-domain          ...

  2. 解决eclipse中自带的maven搜索不到非本地第三方包问题

     解决eclipse中自带的maven搜索不到非本地第三方包问题   版权声明:本文为博主原创文章,未经博主允许不得转载. 最近使用eclipse中的maven插件时发现,在pom.xml文件中添加第 ...

  3. Eclipse中出现无法找到Maven包Active Maven Profiles (comma separated)

    Eclipse中出现无法找到Maven包 2014年02月25日 16:51:30 阅读数:13057     症状:出现org.maven.ide.eclipse.MAVEN2_CLASSPATH_ ...

  4. 在线安装eclipse中html/jsp/xml editor插件(很可靠)

    之前有一篇文章也是安装eclipse中的web开发插件 ,可是经过非常多人使用,那种方法.不是全部人使用都能够. 接下来,找到一种很管用的方法.就是在线安装. 废话不多说,这样的方法绝对能够成功安装. ...

  5. maven下载、安装、卸载以及MyEclipse配置maven

    maven下载 官网下载:http://maven.apache.org/download.cgi 点击链接为官网下载页面,翻到下图所示位置,点击红框选项即可下载 maven安装 1.解压       ...

  6. Eclipse中Tomcat的配置及简单例子

    Eclipse中Tomcat的配置及简单例子 Eclipse中Tomcat的配置是很简单的一个工作 一. 工具下载 Eclipse,最新版的eclipse为Mars版本.下载地址为: http://w ...

  7. Eclipse中导入github上的项目

    Eclipse中导入github上的项目 转载至: http://blog.csdn.net/hil2000/article/details/8566456 1.首先在github.com上申请一个账 ...

  8. eclipse中使用git上传项目

    eclipse中使用git上传项目 先需要上传到本地仓库 先找到此选项打钩 再如下 再添加的属性则可以自动填充邮箱和密码 之后 右键选择import 点击找到git 选中 下一步  如果没有找到git ...

  9. 安装eclipse版本oxygen,及maven导入spring mvc项目并运行

    本文地址为:http://www.cnblogs.com/jying/p/7511598.html 系统环境: win10 eclipse版本:2017.09.11 官网下载版本号为 oxygen 1 ...

  10. maven学习(2)-在Eclipse 中使用Maven

    第一节:m2eclipse 插件安装 打开Eclipse,点击菜单Help - > Install New Software 点击Add 按钮Name:m2e location: http:// ...

随机推荐

  1. postman 编码加密汇总

    1.MD5加密 /*加密方式:将 请求头的user-agent内容+请求方式+当前时间+(Base64)请求body中的stacode参数 拼接后得到的字符串进行MD5加密*/ //1.获取reque ...

  2. java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist

    权限问题,授权给 root 所有sql 权限 在Navicat for MySQL中按F6进入命令列界面 mysql> grant all privileges on *.* to root@& ...

  3. boost之正确性和测试

    BOOST_ASSERT在debug模式下有效. #include <iostream> #include <boost/assert.hpp> using namespace ...

  4. 【转】Python爬虫(5)_性能相关

    爬虫性能相关 一 背景知识 爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,采用串行的方式执行,只能等待爬取一个结束后才能继续下一个,效率会非常低. 需要强调的是: ...

  5. ZOJ 3961 Let's Chat 【水】

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3961 题意 给出两个人的发消息的记录,然后 如果有两人在连续M天 ...

  6. Linux Shell编程 循环语法

    for循环 for 循环是固定循环,也就是在循环时已经知道需要进行几次循环.有时也把 for 循环称为计数循环.语法: for 变量 in 值1 值2 值3… do 程序 done 在这种语法中,fo ...

  7. python中类(class)和实例(instance)

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可 ...

  8. Git常见命令整理

    Git常见命令整理 + 注释 git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 gi ...

  9. iOS_网络编程

    网络编程中有以下几种方式向服务器进行提交数据: IOS同步请求.异步请求.GET请求.POST请求 1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可 ...

  10. Oracle配置文件

    在oracle安装目录$HOME/network/admin下,,经常看到sqlnet.ora tnsnames.ora listener.ora这三个文件,除了tnsnames.ora,其他两个文件 ...