Maven 使用三——maven 配置

一、POM

pom(project object model)作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

pom 书写格式

下面看一下pom文件的书写格式:

在最外层有 project 根节点包着,其次是 pom的modelversion .

内层的设置主要有三部分。

1. 基本设置

2. 构建设置

3. 环境设置

节点说明:

project—- pom文件的顶级元素

modelVersion —–所使用的object model版本,为了确保稳定的使用,这个元素是强制性的。除非maven开发者升级模板,否则不需要修改

parent —–表示父pom

groupId —-是项目创建团体或组织的唯一标志符,通常是域名倒写,如groupId org.apache.maven.plugins就是为所有maven插件预留的

artifactId —–是项目artifact唯一的基地址名

packaging —-artifact打包的方式,如jar、war、ear等等。默认为jar。这个不仅表示项目最终产生何种后缀的文件,也表示build过程使用什么样的lifecycle。

version—– artifact的版本,通常能看见为类似0.0.1-SNAPSHOT,其中SNAPSHOT表示项目开发中,为开发版本

dependencies—- 表示依赖,在子节点dependencies中添加具体依赖的groupId artifactId和version

build 表示build配置

name 表示项目的展现名,在maven生成的文档中使用

url表示项目的地址,在maven生成的文档中使用

description 表示项目的描述,在maven生成的文档中使用。

坐标:其中groupId,artifactId,version,packaging这四项组成了项目的唯一坐标。一般情况下,前面三项就可以组成项目的唯一坐标了。

依赖相关知识

依赖关系分类

pom的依赖关系主要为依赖,继承,聚合

三种关系的节点分别是:

依赖:dependency

继承:parent

聚合:modules

传递依赖 依赖中有一个传递依赖的概念,即A依赖B,B依赖C,那么A间接依赖C。不需要在A中声明对C的dependency了。

继承: A继承B那么,B中声明的依赖,在A中就会被继承过来。不过这里有一点值得说明,子类pom继承了父类pom的依赖还是依赖项的信息,跟声明的节点有关。如果父类中,是用dependentmanagement来声明的,那么父类只是管理的依赖项的版本等信息,子类要依赖的时候,需要显示声明,如果是dependencies,那么子类不需要显示声明,默认就已经依赖。

聚合 在一个pom中将多个相关的pom项目通过modules来组合声明,那么在打包,后者编译的时候,只需要执行一次就OK了。

依赖范围

关于项目依赖也有依赖的声明周期——scope

  1. compile (编译范围)

    compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath 中可用,同时它们也会被打包。

  2. provided (已提供范围)

    provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用。例如, 如果你开发了一个web 应用,你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。已提供范围的依赖在编译classpath (不是运行时)可用。它们不是传递性的,也不会被打包。

  3. runtime (运行时范围)

    runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。

  4. test (测试范围)

    test范围依赖 在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。

  5. system (系统范围)

    system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven 也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的 Maven 仓库中引用依赖)。

二、settings 配置

  1. 配置nexus 地址

    如果不配置nexues的地址,那么maven默认是会找到 central repository的,上篇博客中也说明了,为什么要结合nexus的使用,那么这篇我们就直接说如何连接到nexus。

    如果只是连接一个repository,那么我们可以直接使用节点:repository来进行设置。

    但是我们需要的不仅仅是某一个repository ,因为nexus中存在group的概念,所以,我们利用这个group来管理多个repositories。把我们需要的repository通过一个地址来进行访问,统一入口,这里就用到了另一个节点 mirror。 它是repository的地址镜像,所有的 mirrolorof 中 的repository访问通过这里来进行,没有其他入口,

    如果镜像无法访问,其他也无法访问

    注意:这里改变的只是所有repository的访问地址,其他repository的设置还保持不变。

  2. 配置发布jar权限

    我们如果想要deploy开发的jar包,首先需要开通这个设置,其实是需要拥有deploy的权限。

    1. 开通设置使用的是 distributionManagement。

    2. 然后是开通权限

以上两处的配置中的id信息要一致才行。

3. 配置repository信息

我们统一设置了mirror,改变了要访问repository的访问地址,但是我们还是可以对各自的repository进行独立设置其他属性的。这时候需要使用的是profiles 节点 + activeProfiles 节点。这两个节点必须配置使用,否则无效。并且两者的ID也必须对应上。

1. profiles

2. activeProfiles

好了,到这里 有关maven的基本配置,已经说完了。值得注意的一点是,有些配置是针对所有项目的,那么就应该放settings文件中,如果是针对某一个项目的,那就放到该项目的pom文件中。

大家多多指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 20:58:53

Maven 使用三——maven 配置的相关文章

Maven系列学习(三)Maven生命周期和插件

Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期就是为了对所有的构建过程进行抽象和统一,这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤,Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,在Maven的设计中,实际的任务都是交给插件来完成的 一次构建(build):ini

Maven系列三Maven内置变量

Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} ${project.packaging} 打包

Maven介绍与安装配置

Maven介绍: Maven是项目对象模型(POM),是一个项目模块管工具.能很好的管理模块化开发.模块jar包的分享,并且可以自动下载工程所需要的依赖包. 在开发的过程中我们需要一些可重用的代码来加快开发的速度,因为总不可能一些通用的代码每次都需要自己编写吧,那样的话效率很低,或许我们可以将这些类复制到别的开发工具中使用,但是一两个类还好说,如果有几十个类该如何复制,而且用复制这种方式的话代码也容易被修改或删除. 在早期没有Maven的时候,有一种方式是将可重用的代码打包成jar包,然后用导j

Maven(1)-安装和配置

一.本机必须安装好Jdk 二 .maven下载 http://maven.apache.org/download.cgi ,下载后把maven-bin解压到自己的目录即可(E:\java\maven) 三. maven系统配置 maven类似于jdk,需要在系统变量中进行配置: 右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量,有以下系统变量需要配置: 新建系统变量   MAVEN_HOME  变量值:E:\java\maven 编辑系统变量  Path

Maven 系列 三 :坐标和依赖

1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的. groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应. artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactI

Java-Maven(三):Maven相关的概念:Maven坐标、Maven仓库、Maven声明周期

之前通过学习对maven命令有了部分了解,但是只是知道maven是用来做什么.但到目前位置还不足以全面的了解maven,为更全面的了解maven,需要学习以下几个概念:Maven坐标.Maven仓库.Maven生命周期. Maven坐标 maven坐标概念:每个构件都有自己的一个标识(唯一的),它由groupId,artifactId,version等信息组成,因此maven就可以对构件进行版本控制.管理. 备注: groupId :公司名称或者组织名称: artifactId:项目名称: ve

Maven(三)在Eclipse中使用Maven与Maven坐标

这一篇讲解一下在eclipse中使用maven,在一些高版本的eclipse中是自带maven插件的.所以这里就不在讲解怎么安装插件了. 接下来我们创建一个MavenFirst项目 一.在Eclipse中创建一个MavenFirst项目 第一步:创建一个Maven工程 第二步:选择创建java项目——>next 第三步:填写GAV 第四步:点击finsh,完成创建 第五步:创建一个MavenFirst.java package com.zyh.maven.MavenFirst; public c

Spark-1.0.1 的make-distribution.sh编译、SBT编译、Maven编译 三种编译方法

本文编译方法所支持的hadoop环境是Hadoop-2.2.0,YARN是2.2.0,JAVA版本为1.8.0_11,操作系统Ubuntu14.04 Spark1.0.0 源码下载地址: http://mirror.bit.edu.cn/apache/spark/spark-1.0.0/spark-1.0.0.tgz Spark1.0.1 源码下载地址:http://apache.fayea.com/apache-mirror/spark/spark-1.0.1/spark-1.0.1.tgz

Maven系列--setting.xml 配置详解

文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${user.home} 和和所有其他系统属性只能在3.0+版本上使用.请注意windows和Linux使用变量的区别. settings.xml详解 声明规范 <?xml version="1.0" encoding="UTF-8"?> <settings x