1.Apache软件基金会提供的项目自动化构建和项目管理软件。

基于项目对象模型(POM)概念,Maven利用一个中央信息片段能管理一个项目的构建、报告、文档等步骤。

官方网站:http://maven.apache.org/

2.(1)方便jar包管理;

(2)开发工具不同,项目结构可能不同,maven可统一项目结构;

(3)每个项目都要用的核心代码包(自己写的工具包),单独列出一个工程叫核心包,打成一个jar包,让七八个工程直接引用jar包就行了,但若核心包升级了还得手动更新,maven可以解决该问题;

3.使用前提:

      (1)下载

         http://maven.apache.org/download.cgi

      (2) 配置环境变量 (系统变量)
         M2_HOME = maven根路径 
         PATH = maven根路径/bin 
      (3) 执行maven命令 
         mvn -v 显示maven版本信息

4.bin文件:可执行的文件,

bat文件:批处理文件;

5.maven工程 

my-app
|-- pom.xml
`-- src
  |-- main
    | `-- java
      | `-- com
        | `-- mycompany
          | `-- app
            | `-- App.java
  `-- test
    `-- java
      `-- com
        `-- mycompany
          `-- app
            `-- AppTest.java

6.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>com.mycompany.app</groupId> <!--公司所做项目名称-->
  <artifactId>my-app</artifactId> <!--模块的名称-->
  <version>1.0-SNAPSHOT</version> <!--版本号-->

</project>

groupId:公司所做的项目的名称
artifactId:模块的名称
version:版本号

groupId + artifactId + version = 坐标

7.编译代码

  >d:(切换到d盘)
  >cd myapp (进入到某个文件)
  >mvn compile

  编译后产生target目录,里面存放的就是编译后的字节码文件

注意:编译只会编译main文件里的Java程序;所以不会编译test文件里的测试程序;

   mkdir  新文件夹名称

8.执行单元测试
mvn test

http://mvnrepository.com/ (查询坐标)

在pom.xml添加对junit的依赖

<!--配置当前项目对第三方jar的依赖-->
<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.2</version>
  </dependency>
</dependencies>

9.清除target
  mvn clean

10.打包 (Java源代码打成jar包)
  mvn package

11.到本地仓库中
  mvn install

12.修改本地仓库位置
默认位置在操作的系统的~/.m2文件夹中,修改方式如下: (~:当前用户的文件夹)
1.  取消mavenhome/conf/settings.xml配置文件中的注释的该行代码:
<localRepository>/path/to/local/repo</localRepository>
2.  将其中的路径修改为自己希望的路径
<localRepository>D:/maven/repo</localRepository>
3.  并将settings.xml文件拷贝一份到D:/maven目录中

13.maven查找依赖的顺序
  1.  从本地仓库中查找所需要的依赖
  2.  从私有仓库中查找所需要的依赖
  3.  从中央仓库(http://repo.maven.apache.org/)中查找所需要的依赖
    本地仓库→  私有仓库→  中央仓库

14.没有任何开发工具的情况下使用maven:

  使用Archetype快速创建项目
    mvn archetype:generate
    在输出的交互式命令中输入坐标即可创建
    或
    mvn archetype:generate -DgroupId=com.kaishengit.pms -DartifactId=myapp2 -Dversion=1.0.0-
    SNAPSHOT

15.eclipse开发工具安装插件:M2Eclipse,然后才能使用maven(版本在10以上该插件是自带的)

    使用M2Eclipse插件创建项目
    http://eclipse.org/m2e/

    将下载好的插件→放入dropins文件夹(myeclipse安装路径中的)即可;

  注意:Windows→preferences→installations(add配置好环境变量的maven路径)→user settings(首先将maven config文件夹里的settings.xml复制到本地仓库        的路径)settings.xml路径

16.先配好再建maven工程→maven build...→package(打包)→install(将该包发布到本地仓库)

  在另一个项目中要引用刚才那个项目的包→在另一个项目的pom.xml中添加依赖(引用包的坐标)

17.maven的聚合 (多个maven项目想要同时执行maven的某个命令:先建一个新的maven项目,但pacakging 选择pom即该项目只有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.kaishengit</groupId>
  <artifactId>all</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>../core</module> <!--通过该pom项目的路径找到core项目的路径-->
    <module>../dao</module>
  </modules>

</project>

18.scope 
  •  compile——编译(默认值,在编译、打包时使用)
  •  provided——编译和测试时使用的依赖,打包时不加入,例如servlet-api.jar
  •  runtime——运行时依赖,编译时不依赖,例如mysql.jar
  •  test——只有测试时依赖,编译和打包时不使用,例如junit.jar

19.若在项目空间添加的Java文件在开发工具中刷新不出来:右键项目→properties→Java build path→source→add folder

20.webapp项目典型的结构(若结构不全自己可以补全,通过19)

  ---src

    ---main

      ---java(源代码文件)

      ---resources(etc配置文件)

      ---webapp(webRoot)

    ---test

      ---java

      ---resources

21.maven build → compile package(编译后打包的命令)

得复制到tomcat的webapp下麻烦

22.为了解决21的问题:jetty maven有个插件(wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin)

  pom.xml中的build节点的Plugins节点中plugin节点中添加依赖:命令jetty:run

  测试用jetty环境

23.改端口号:在pom.xml中添加    

      web项目
      Jetty插件
      <build>
        <finalName>struts</finalName>
        <plugins>
          <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <configuration>
              <scanIntervalSeconds>10</scanIntervalSeconds>
              <webApp>
                <contextPath>/</contextPath> <!--请求的路径-->localhost:9090/home.do
              </webApp>
              <connectors>
                <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                  <port>9090</port> <!--服务器端口号-->
                  <maxIdleTime>60000</maxIdleTime>
                </connector>
              </connectors>
            </configuration>
          </plugin>
        </plugins>
      </build>

24.访问私服:http://url:端口号/nexus

25.依赖传递和冲突
  •  依赖级别相同时,在dependency前面的会使用
  •  依赖级别不相同时,依赖路径短的会使用
  •  依赖传递只会传递compile级别的包
  •  排除依赖
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.15.1</version>
    <exclusions>
      <exclusion>
        <groupId></groupId>
        <artifactId></artifactId>
        </exclusion>
    </exclusions>
  </dependency>

26.其他配置
  <properties>
    <junit.version>4.11</junit.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

Maven的具体使用和优点的更多相关文章

  1. Maven实战——Gradle,构建工具的未来?

    许晓斌-- 四月 05, 2011 Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基 ...

  2. Maven 项目在 Eclipse 的创建配置

    第1步 New 菜单 Other.. -> Maven -> Maven Project ,然后单击 Next .如下图所示 第2步 在New Maven Project向导中,选择Cre ...

  3. maven实践--你所需要了解的maven

    基本概念 是什么? Maven是一个强大的Java项目构建工具. 什么是构建工具? 构建工具是将软件项目构建相关的过程自动化的工具.构建一个软件项目通常包含以下一个或多个过程: 生成源码(如果项目使用 ...

  4. AutoConfig工具使用指南

    转载:http://blog.csdn.net/fighterandknight/article/details/70245905 13.1. 需求分析 13.1.1. 解决方案 13.2. Auto ...

  5. 亲测:三个值得练手的Java实战项目

    测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...

  6. 创建Maven父子项目以及它们的优点

    此文引用:https://blog.csdn.net/zxl8876/article/details/104180133 创建maven父子项目 第一步创建父项目: 新建一个普通的maven项目 删除 ...

  7. Maven的特点、优点-功能摘要

    Maven功能摘要 以下是Maven的主要特点: 遵循最佳实践的简单项目设置 - 在几秒钟内启动新项目或模块 所有项目的一致使用 - 意味着新开发人员进入项目的时间不会增加 卓越的依赖管理,包括自动更 ...

  8. 分析maven的优点

    1.依赖管理: 就是对jar包的管理. 2.项目的一键构建: 编译--->测试--->运行--->打包--->安装 运行一个maven工程(web工程)只需要一个命令:toma ...

  9. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

随机推荐

  1. js基础闭包练习题

    题目描述 实现函数 makeClosures,调用之后满足如下条件:1.返回一个函数数组 result,长度与 arr 相同2.运行 result 中第 i 个函数,即 result[i](),结果与 ...

  2. 使用python模拟实现KNN算法

    一.KNN简介 1.KNN算法也称为K邻近算法,是数据挖掘分类技术之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. 2.KNN算法的核心思想是如果一个样本 ...

  3. 【监控】jvisualvm之jmx远程连接 jar启动应用

    一.Java -jar启动添加如下参数就可以了 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.su ...

  4. Java数据库操作的一些注意

    练习一:插入一个学生的四六级成绩: //课后练习 public class task3 { //添加一条数据 @Test public void testInsert() { int id=1; Sc ...

  5. kali 攻击wordpress + trunkey linux wordpress 安装方法

    Kali-linux攻击WordPress和其他应用程序   今天越来越多的企业利用SAAS(Software as a Service)工具应用在他们的业务中.例如,他们经常使用WordPress作 ...

  6. Kotlin函数与Lambda表达式深入

    Kotlin函数: 关于Kotlin函数在之前也一直在用,用fun来声明,回忆下: 下面再来整体对Kotlin的函数进行一个学习. 默认参数(default arguments): 先来定义一个函数: ...

  7. HRBUST 2040 二叉树的遍历

    给出一棵二叉树的中序和前序遍历,输出它的后序遍历. Input 本题有多组数据,输入处理到文件结束. 每组数据的第一行包括一个整数n,表示这棵二叉树一共有n个节点. 接下来的一行每行包括n个整数,表示 ...

  8. CentOS7.5下搭建的SVN实现删除权限控制和必须进行注释的提示操作

    需求:上传到SVN服务器的项目文件如果被普通用户误删了,虽然能恢复,但是如果删除的文件比较多,注释的内容简单,恢复的时候需要一个个的保存到本地,然后再上传到服务器上,会很麻烦,可能还会出现提交代码版本 ...

  9. postgres —— 有序集与假象聚集

    有序集 -- 有序集.分组后,按给定顺序排序,再进行计算 SELECT region, percentile_disc(0.5) WITHIN GROUP (order by production) ...

  10. 【学习笔记】Kruskal 重构树

    1. 例题引入:BZOJ3551 用一道例题引入:BZOJ3551 题目大意:有 \(N\) 座山峰,每座山峰有他的高度 \(h_i\).有些山峰之间有双向道路相连,共 \(M\) 条路径,每条路径有 ...