项目管理工具---maven

maven笔记

开发项目,需要下载各种各样的jar包,有用的,没用的,冲突的,项目还没有开始开发就臃肿的可以不要不要的.
项目管理工具,Maven,Ant,gradle…

bin:包含了mvn的运行脚本
boot:包含了一个类加载器的框架

配置环境变量

vim /etc/profile    //配置环境变量

#maven set
export M2_HOME=/home/juedaiyuer/apache-maven-3.3.9
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

保存

source profile //不用重启

mvn -version

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/juedaiyuer/apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /usr/jdk1.8.0_65/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.19.0-56-generic", arch: "i386", family: "unix"

maven目录结构

src
    -main
        -java
            主代码
    -test
        -java
            测试代码
    -resources(资源文件)

第一次maven测试(without IDE)

//maven测试中用到
mkdir -p src/main/java test/java

/main/java/maven 目录 

package maven.example01;

public class HelloWorld
{
    public String sayHello()
    {
        return "Hello World!";
    }
}


/test/java/maven    

package maven.example01;

import org.junit.*;
import org.Assert.*;

public class  HelloWorldTest{
    @Test
    public void testHello()
    {
        Assert.assertEquals("Hello World!",new HelloWorld().sayHello());
    }
}

配置pom.xml

在struts文件的lib,struts2-core文件(jar),META-INF/maven/org.apache.struts/struts2-core/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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>maven</groupId>
    <artifactId>maven-example01</artifactId>
    <version>0.0.1SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>
</project>

调试

mvn -v
mvn compile 项目编译
mvn test 运行
mvn package 打包
mvn clean 删除target
mvn install 安装jar包到本地仓库

自动建立目录骨架

archetype插件用于创建符合maven规定的目录骨架

mvn archetype:generate 按照提示进行选择

mvn archetype:generate -DgroupId yourgroup -DartifactId yourartifactId -Dversion yourversion -Dpackage yourpackge

坐标与仓库

pom.xml配置文档

本地仓库和远程仓库

超级pom:maven文件 lib/maven-model-builder-3.3.9.jar//org/apache/maven/model/pom.xml

https://repo.maven.apache.org/maven2 全球仓库的地址

镜像仓库

maven文件夹/conf/settings.xml

mirror标签

配置完后访问镜像仓库,原仓库不再访问

更改仓库位置

默认仓库下载地址: /home/juedaiyuer/.m2/repository

也可以设置仓库,放置在你的项目文件中,配置文件settings.xml

localRepository标签 修改仓库位置

坐标

<modelVersion> 指定了当前的pom的版本

//坐标三标签

<groupId> 反写的公司网址+项目名
<artifactId> 项目名+模块名
<version> 版本号 第一个数字:大版本号 第二个数字:分支版本号 第三个数字:小版本号

maven坐标格式:groupId:artifactId:packaging:version
包名应该与坐标相吻合

snapshot 快照
alpha 内部测试
beta 公测
Release 稳定
GA 正式发布

eclipse下maven的使用

查看IDE是否安装maven
window-preferences中查看是否有maven选项,如果有不用安装;

安装maven到IDE

将maven插件复制到eclipse/dropins

配置

maven的一些核心插件需要JDK
eclipse运行在JRE上,需要添加JDK

修改eclipse.ini文件

-vm
jdk文件路径(yourjdk/bin)/javaw.exe

修改eclipse默认的JRE

配置JRE,与JDK同用;

JRE

add只需要选择JDK所在目录即可

maven配置修改为本机的maven

eclipse修改本机的maven

生命周期和插件

完整的项目构建过程

清理-编译-测试-打包-集成测试-验证-部署

maven生命周期

clean 清理项目
default 构建项目
site 生成项目站点

pom.xml

坐标信息

标签

name 项目描述名
url 项目的地址
description 项目的描述
developers 项目开发人员列表
licenses 许可证信息
organization 组织信息
dependencies 依赖列表
    dependency 依赖项
        groupId
        artifactId
        version
        type
        scope
        optional 设置依赖是否可选
        exclusions 排除依赖传递列表
            exclusion

dependencyManagement 依赖的管理(不会引入实际的以来当中,一般定义在父模块中,供子模块继承)

build 构建行为提供支持
    plugins 插件列表
        plugin 插件
            groupId
            artifactId
            version


parent 
modules 聚合多个maven项目
    module

maven的依赖管理

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

scope标签

compile 默认的范围,编译测试运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 测试时有效
system 与本机系统相关联,可移植性差
import 导入的范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependecy的配置

依赖的传递

依赖冲突

  • 短路优先(优先解析路径短的)
  • 先声明先优先(如果路径长度相同)

    A->B->C->X(jar)
    A->D->X(jar)

    优先解析路径短的

聚合和继承

使用maven构建web项目

new-maven-webapp

添加servlet依赖


source

  1. imooc 项目管理利器–maven
  2. mvnrepository
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值