MAVEN使用最佳实践
- 格式:doc
- 大小:331.00 KB
- 文档页数:6
Maven的介绍及使⽤⼀、Maven简介 Maven 是⼀个项⽬管理⼯具,可以对 Java 项⽬进⾏构建、依赖管理,是⼀个⾃动化构建⼯具。
⾃动化构建⼯具:将原材料(java、js、css、html....)->产品(可发布项⽬) 编译-打包-部署-测试 -> ⾃动构建Maven的作⽤:1、管理jar包1. 增加第三⽅jar包(不需要⾃⼰下载jar包)2. 管理jar包之间的依赖关系(maven⾃动关联下载所有依赖的jar包)2、将项⽬拆分成若⼲个模块:借助于Maven可以将⼀个项⽬拆分成多个⼯程。
(例如爱洋葱)Maven能⼲的事情: 清理:删除编译的结果,为重新编译做准备。
编译:java->class 测试:针对于项⽬中的关键点进⾏测试,也可⽤项⽬中的测试代码去测试开发代码 报告:将测试结果进⾏显⽰ 打包:将项⽬中包含的多个⽂件压缩成⼀个⽂件,⽤于安装或部署(java项⽬打成⼀个jar包,web项⽬打成⼀个war包,⽗⼯程-pom) 安装:将打成的包,放到本地仓库,供其他项⽬使⽤。
部署:将打成的包,放到服务器上,准备运⾏。
Eclipse中的项⽬,要在Tomcat中运⾏,需要部署: a、通过eclipse中add and remove按钮进⾏部署 b、将Web项⽬打成⼀个war包,然后将该war包复制到Tomcat/webapps中即可 通常下载⼀个jar包,先在本地仓库中下载,如果本地仓库中不存在,则再联⽹到中央仓库(镜像)去下载。
约定配置: Maven 提倡使⽤⼀个共同的标准⽬录结构,Maven 使⽤约定优于配置的原则,⼤家尽可能的遵守这样的⽬录结构。
如下所⽰:⼆、Maven POM POM(项⽬对象模型) 是 Maven ⼯程的基本⼯作单元,是⼀个XML⽂件,包含了项⽬的基本信息,⽤于描述项⽬如何构建,声明项⽬依赖,等等。
执⾏任务或⽬标时,Maven 会在当前⽬录中查找 POM。
idea maven plugin使用方法### IDEA Maven Plugin使用指南IDEA(IntelliJ IDEA)作为一款流行的Java集成开发环境,内置了对Maven的强大支持。
Maven是一个项目管理和构建自动化工具,它能够帮助开发者自动化构建、测试、打包和部署项目。
IDEA中的Maven插件使得在IDE内部即可完成大部分Maven操作,提高了开发效率。
#### 一、安装与配置1.**确保IDEA已安装**:在安装IDEA时,通常默认已经集成了Maven 插件,如果没有,可以通过以下步骤进行安装:- 打开IDEA,进入"File" -> "Settings"(或"IntelliJ IDEA" -> "Preferences",具体取决于操作系统)。
- 在"Plugins"部分,搜索"Maven",并点击"Install"按钮安装。
2.**配置Maven环境**:- 在"Settings"或"Preferences"中找到"Maven"。
- 指定Maven的主目录(通常是Maven安装目录)和本地仓库位置。
- 配置Maven的设置文件`settings.xml`,通常位于Maven主目录的`conf`文件夹内。
#### 二、基本使用方法1.**创建Maven项目**:- 在IDEA中,选择"Create New Project",然后选择"Maven"作为项目类型。
- 根据需要选择项目原型(archetype),并填写项目坐标(如groupId、artifactId等)。
2.**解析依赖**:- 在项目的`pom.xml`文件中添加依赖后,IDEA会自动提示你解析依赖。
maven helper的使用Maven Helper是一款常用的Maven插件,它提供了一系列的功能,可以帮助开发人员更方便地使用Maven构建项目。
本文将介绍Maven Helper的使用方法和常见功能。
一、Maven Helper的安装我们需要在IDE中安装Maven Helper插件。
在Eclipse中,可以通过以下步骤进行安装:1. 打开Eclipse,点击菜单栏的“Help”选项;2. 在弹出的菜单中选择“Eclipse Marketplace”;3. 在Marketplace搜索框中输入“Maven Helper”,点击搜索按钮;4. 找到Maven Helper插件,并点击“Go to the marketplace”按钮;5. 点击“Install”按钮进行安装;6. 安装完成后,重启Eclipse使插件生效。
二、Maven Helper的常见功能1. 依赖分析:Maven Helper可以帮助开发人员分析项目的依赖关系,并展示依赖树状图。
通过依赖树状图,开发人员可以清晰地了解项目的依赖情况,包括依赖的版本、传递依赖等信息。
2. 依赖冲突解决:在使用Maven构建项目时,可能会遇到依赖冲突的情况。
Maven Helper可以帮助开发人员解决依赖冲突,通过排除特定的依赖或调整依赖的版本来解决冲突问题。
3. 依赖搜索:Maven Helper提供了依赖搜索功能,可以根据关键字搜索Maven中央仓库中的依赖。
通过搜索功能,开发人员可以快速找到需要的依赖,并将其添加到项目中。
4. 依赖更新:Maven Helper可以帮助开发人员检查项目中的依赖是否有更新版本,如果有更新版本,可以直接在插件中进行更新操作,避免手动修改pom.xml文件。
5. 依赖图形化展示:除了依赖树状图外,Maven Helper还提供了依赖图的展示功能。
通过依赖图,开发人员可以更直观地了解项目中各个模块之间的依赖关系,帮助理清项目的架构。
Maven常⽤命令及其作⽤、常见问题、常⽤命令使⽤场景举例⼀、Maven常⽤命令及其作⽤1、 maven clean:对项⽬进⾏清理,删除target⽬录下编译的内容2、 maven compile:编译项⽬源代码3、 maven test:对项⽬进⾏运⾏测试4、 maven packet:打包⽂件并存放到项⽬的target⽬录下,打包好的⽂件通常都是编译后的class⽂件5、 maven install:在本地仓库⽣成仓库的安装包,可供其他项⽬引⽤,同时打包后的⽂件放到项⽬的target⽬录下⼆、常⽤命令使⽤场景举例1、mvn clean package依次执⾏了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段package命令完成了项⽬编译、单元测试、打包功能,但没有把打好的可执⾏jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库2、mvn clean install依次执⾏了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段install命令完成了项⽬编译、单元测试、打包功能,同时把打好的可执⾏jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库3、mvn clean deploy依次执⾏了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段deploy命令完成了项⽬编译、单元测试、打包功能,同时把打好的可执⾏jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库三、常见问题(⼀)mvn clean install 和 mvn install 的区别1、根据maven在执⾏⼀个⽣命周期命令时,理论上讲,不做mvn install 得到的jar包应该是最新的,除⾮使⽤其他⽅式修改jar包的内容,但没有修改源代码2、平时可以使⽤mvn install ,不使⽤clean会节省时间,但是最保险的⽅式还是mvn clean install,这样可以⽣成最新的jar包或者其他包(⼆)maven两种跳过单元测试⽅法的区别1、 mvn package -Dmaven.test.skip=true不但跳过了单元测试的运⾏,同时也跳过了测试代码的编译2、 mvn package -DskipTests跳过单元测试,但是会继续编译。
maven pom build 继承规则摘要:I.引言A.Maven简介B.Maven POM概述C.Maven POM继承规则的重要性II.Maven POM继承规则A.父POM和子POM的关系B.继承规则的语法C.默认值和覆盖值D.依赖的传递和冲突解决III.父POM的优点A.共享配置B.简化POM管理C.提高项目的可维护性IV.最佳实践A.使用合适的父POMB.避免过度使用父POMC.管理好依赖的传递V.结论A.Maven POM继承规则的重要性B.如何在项目中应用继承规则正文:Maven是一个广泛使用的构建工具,它可以帮助开发者自动化构建、测试、部署等过程。
在Maven中,POM(Project Object Model)文件是项目的核心配置文件,它包含了项目的所有信息,如依赖、插件、配置等。
在大型项目中,POM文件可能会变得复杂,因此Maven提供了继承规则,使得开发者可以更好地管理和维护POM文件。
Maven POM继承规则指的是子POM(Child POM)可以继承父POM (Parent POM)中的配置。
这样,子POM可以重写或添加父POM中的配置,从而实现对父POM的扩展。
在实际项目中,我们可以将通用的配置放在父POM中,将特定项目的配置放在子POM中,这样可以简化项目管理,提高项目的可维护性。
要使用Maven POM继承规则,你需要了解以下几点:1.父POM和子POM的关系:在一个项目中,可以有一个父POM和多个子POM。
子POM可以继承父POM中的配置,同时也可以重写或添加父POM中的配置。
2.继承规则的语法:子POM中使用`<parent>`标签来指定父POM的坐标。
例如:```xml<parent><groupId>com.example</groupId><artifactId>my-parent</artifactId><version>1.0.0</version></parent>```3.默认值和覆盖值:子POM可以覆盖父POM中的配置,也可以添加新的配置。
maven-publish使用文档1. 引言1.1 概述在软件开发过程中,构建工具的选择和使用是至关重要的。
Maven是一个流行的构建工具,被广泛用于Java项目的构建和管理。
随着项目规模的增长,我们经常需要将项目发布到远程仓库或者本地仓库以供团队成员或其他项目使用。
而Maven Publish插件就提供了一种简单且灵活的方式来实现项目的发布。
1.2 文章结构本文将介绍如何使用Maven Publish插件来进行项目的发布。
首先会对Maven Publish基本概念进行解释,包括它是什么、它的作用以及优势所在。
接着,文章将详细说明使用Maven Publish的步骤,并给出相应示例代码和配置说明。
最后,在结论部分总结了Maven Publish的重要性和用途,并提供进一步学习资源和建议。
1.3 目的本文的目标是帮助读者了解如何使用Maven Publish插件来进行项目发布,并通过详细步骤和示例代码帮助读者更好地掌握这一技术。
无论是初学者还是有一定经验的开发人员,都可以通过本文学习到使用Maven Publish插件进行项目发布所需知识和技巧。
无论您是正在进行个人项目还是团队协作,通过本文的学习您将能够更加高效地进行项目发布和管理。
2. 正文正文部分将详细介绍Maven Publish的相关内容,包括其基本概念、使用步骤以及一些重要的注意事项和实例。
下面是正文的内容:Maven Publish是一个用于构建和发布Java项目的插件,它提供了一种简单而灵活的方式来创建和配置发布任务。
通过使用Maven Publish插件,开发人员可以方便地将他们的代码部署到各种远程存储库中。
在开始之前,我们首先介绍一下Maven Publish的基本概念。
它主要组成了以下几个部分:发布任务、发布组合和发布配置块。
发布任务是指通过执行特定操作将项目构建结果发布到某个远程存储库的过程。
每个发布任务都有自己的名称和类型,可以根据需要进行自定义配置。
Ideal 中 Maven Clean 的实现方法一、概述Maven 是一个构建工具,它可以管理项目的构建过程、依赖关系和项目报告等。
在使用 Maven 进行项目构建时,经常会用到 clean 命令来清理项目的目录。
本文将介绍在 Ideal 中如何实现 Maven Clean 的方法。
二、配置 Maven Clean 插件1. 在 IDE 中打开项目打开 IDE(如IntelliJ IDEA),然后选择要清理的项目。
2. 打开 Maven 配置文件在项目中找到 pom.xml 文件,这是 Maven 的配置文件。
点击打开pom.xml 文件,即可进行 Maven 的配置。
3. 添加 Clean 插件在 pom.xml 文件中,找到 <build> 标签,然后在其中添加 clean 插件的配置:```xml<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin></plugins></build>```以上配置添加了 Maven Clean 插件的依赖,使得在执行 Maven Clean 命令时,能够正确地清理项目目录。
三、执行 Maven Clean1. 打开终端在 IDE 的终端中,输入以下命令执行 Maven Clean:```shellmvn clean```2. 查看执行结果Maven Clean 命令执行完成后,可以在终端中查看执行结果。
通常情况下,会出现类似以下内容的输出:```shell[INFO] Scanning for projects...[INFO][INFO] -----------------<.example:my-project >----------------- [INFO] Building my-project 1.0[INFO] --------------------------------[ jar ]---------------------------------[INFO][INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ my-project ---[INFO] Deleting /Users/username/Workspace/my-project/target [INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.702 s[INFO] Finished at: 2022-01-01T00:00:00+08:00[INFO] ------------------------------------------------------------------------```以上输出显示了 Maven Clean 命令的执行过程,其中包括了清理目录的操作以及执行结果的信息。
Maven 2 详细教程开始之前现代软件开发基于健壮的企业级开源技术,它需要一类新的构建工具和项目协作工具。
Apache Maven 2 的核心引擎旨在简化往往十分复杂的大型协作性软件项目的构建和管理。
在大型项目团队环境中工作是种挑战,而 Maven 2 以友好为设计目的,即便对那些不熟悉这种挑战的开发人员而言,Maven 2 也足够友好。
本教程首先围绕单个的新手开发展开,然后逐渐介绍 Maven 2 中的一些协作性的概念和功能。
我们鼓励您在本教程提供的介绍之上,探究本文范围之外的Maven 2 的一些高级功能。
关于本教程本教程将循序渐进地向您介绍有关 Maven 2 的基础概念和实践练习,具体内容包括:∙Maven 2 概览∙理解 Maven 2 依赖项管理模型∙Maven 2 存储库和 Maven 2 坐标∙Maven 2 生命周期、阶段、插件和 mojo∙下载和安装 Maven 2∙实践 Maven 2 ——您的第一个 Maven 2 项目∙定制项目对象模型(POM)∙参与多个项目∙实践 Maven 2 ——参与多个项目构建∙在 Eclipse 3.2 中安装 Maven 2.x Plug-in∙在 Eclipse 3.2 中使用 Maven 2.x Plug-in∙支持上述 JDK/JRE 的系统,有至少 1GB 的主存∙有至少 20MB 的磁盘空间来安装软件组件和样例本教程中的说明基于 Microsoft Windows 操作系统。
教程中涵盖的所有工具也可以在Linux® 和UNIX® 系统上运行。
Maven 2 概览Maven 是一个顶级的 Apache Software Foundation 开源项目,创建它最初是为了管理 Jakarta Turbine 项目复杂的构建过程。
从那以后,不论是开源开发项目还是私有开发项目都选择 Maven 作为项目构建系统。
Maven 快速地发展着,如今已是第二版,Maven 已经从针对单个复杂项目的定制构建工具成长为广泛使用的构建管理系统,其丰富的功能可以应用于大多数的软件开发场景。
maven -p用法【Maven P用法】Maven是一个基于Java平台的项目管理和构建自动化工具,被广泛用于Java 开发中。
在Maven中,构建过程被描述为一系列的项目对象模型(Project Object Model,POM)配置,其中包含了项目的元数据、依赖关系和构建信息。
本文将详细介绍如何正确使用Maven的P用法,包括POM文件的结构和常用配置,以及如何管理依赖和执行构建任务。
一、POM文件结构在使用Maven构建项目时,POM文件是非常重要的配置文件。
它位于项目的根目录下,以.xml格式保存。
POM文件的结构如下:<project><modelVersion>4.0.0</modelVersion><groupId>...</groupId><artifactId>...</artifactId><version>...</version><packaging>...</packaging><name>...</name><url>...</url><dependencies>...</dependencies><build>...</build></project>1. modelVersion:指定使用的POM模型的版本。
通常为4.0.0。
2. groupId:定义项目所属的组织或者包名。
3. artifactId:定义项目的唯一标识符。
4. version:定义项目的版本号。
5. packaging:定义项目的打包方式,如jar、war等。
6. name:定义项目的名称。
7. url:定义项目的官方网站URL。
8. dependencies:定义项目所依赖的外部库。
idea中写在maven配置中的model层中的vo层的用法1. 引言1.1 概述在开发过程中,Model层和VO(视图对象)层扮演着重要的角色。
Maven是一个强大的项目管理工具,方便我们统一管理和构建项目。
本文讨论了在Maven 配置中,将VO层放置在Model层中的用法。
1.2 文章结构本文主要分为五个部分进行讨论。
引言部分作为开篇内容,概述了文章的主题和结构。
接下来将详细介绍Maven配置中的Model层以及VO层的概念、作用和用法。
然后探讨在Maven配置中将VO层写在Model层中带来的优势和挑战。
最后通过总结观点和发现,给出进一步研究或实践的建议。
1.3 目的本文旨在探讨在Maven项目配置中,将VO层写在Model层中这一做法的合理性和可行性,并对其优势与挑战进行深入剖析。
通过对Model层和VO层的关系及各自作用的理解,我们可以更好地应用它们来提高代码质量、降低耦合度并简化依赖管理。
同时,我们也会思考如何处理VO层与其他模块之间关系的问题,为未来的研究和实践提供建议。
以上便是“1. 引言”部分的内容。
2. Maven配置中的Model层2.1 Model层概述在Maven配置中,Model层是指项目的核心数据模型。
它包含了项目的基本信息、依赖管理等内容,并通过pom.xml文件进行配置和定义。
作为项目构建和管理的核心组成部分,Model层承载着整个项目的结构和配置信息。
2.2 Model和VO层的关系VO(Value Object)层代表值对象层,是一种用于封装数据的设计模式。
在Maven配置中,VO层常常被应用于Model层中,用于将复杂数据结构分解为简单的数值类型或对象。
这种设计可以提高代码可读性和维护性,并且有助于降低耦合度。
Model和VO层之间存在紧密的关系。
Model层负责管理项目核心数据模型,并且通常会包含一些复杂的业务逻辑。
而VO层则起到了解耦合、封装复杂性的作用,使得Model中的数据更易理解、更易处理。
MA VEN使用最佳实践闫国玉2009-10-26本文档介绍一些在使用Maven过程中不是必须的,但十分有用的实践。
目录1.1设置MA VEN_OPTS环境变量 (2)1.2配置用户范围SETTINGS.XML (2)1.3不要使用IDE内嵌的M A VEN (3)1.4搭建内部仓库管理器 (4)1.5尽可能的遵循M A VEN的约定 (5)1.6优先编译被依赖的模块 (5)1.7利用M A VEN插件创建项目 (5)1.1设置MAVEN_OPTS环境变量当Maven项目很大,或者你运行诸如mvn site 这样的命令的时候,maven运行需要很大的内存,在默认配置下,就可能遇到java的堆溢出。
解决的方法是调整java的堆大小的值。
Windows环境中找到文件%M2_HOME%\bin\mvn.bat ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为:@REM set MA VEN_OPTS=-Xdebug -Xnoagent piler=NONE...它的意思是你可以设置一些Maven参数,我们就在注释下面加入一行:set MA VEN_OPTS= -Xms128m -Xmx512m之后,当你运行Maven命令如mvn -version 的时候,你会看到如下的输出:E:\test>mvn -versionE:\test>set MA VEN_OPTS= -Xms128m -Xmx512mMaven version: 2.0.9Java version: 1.6.0_07OS name: "windows 2003" version: "5.2" arch: "x86" Family: "windows"我们看到,配置的Maven选项生效了,OutOfMemoryError也能得以相应的解决。
Linux环境中也可以通过设置环境变量解决该问题,如,编辑文件/etc/profile 如下MA VEN_OPTS=-Xmx512mexport JA VA_HOME MA VEN_HOME MA VEN_OPTS JA V A_BIN PATH CLASSPATH如果你使用Hudson用Hudson + Maven做持续集成,并不幸也遇到了类似的错误,那么上述两种方式都将不再起作用了,因为Hudson使用自己的maven-agent来启动Maven,不会去调用Maven的脚本,自然相应的配置也就无效了。
好在Hudson也给为我们提供了配置点,在Hudson的项目配置页面中,有一块Build区域,这里我们已经设置了Root Pom和Goals。
注意该区域的右下角有一个"Advanced..."按钮,点击会看到MA VEN_OPTS输入框,这里输入"-Xmx512m"就OK了。
m2eclipse中类似以上的方法都会失效,所幸m2eclipse提供了配置点。
步骤如下:项目上右击-> Run As -> Run Configurations -> Maven Build 上右击-> New这时会看到一个maven运行配置对话框,这里面其它的配置我不多解释了,为了解决内存溢出的问题,我们可以选择第二个TAB: JRE,然后在VM arguments中输入配置如:-Xms128m -Xmx512m。
1.2配置用户范围settings.xmlMaven用户可以选择配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml。
前者是全局范围的,整台机器上的所有用户都会直接收到该配置的影响,而后者是用户范围的,只有当前用户才会收到该配置的影响。
我们推荐使用用户范围的settings.xml,主要是为了避免无意识地影响到系统中其他用户,当然,如果你有切实的需求,需要统一系统中所有用户的settings.xml配置,则当然应该使用全局范围的settings.xml。
除了影响范围这一因素,配置用户范围settings.xml文件还能够方便Maven的升级。
直接修改conf目录下的settings.xml会造成Maven升级的不便,每次升级到新版本的Maven,我们就需要赋值settings.xml文件,而如果使用~/.m2目录下的settings.xml,就不会影响到Maven安装文件,升级时就不需要触动settings.xml文件。
1.3不要使用IDE内嵌的Maven不论是Eclipse还是NetBeas,当我们集成Maven的时候,都会安装上一个内嵌的Maven,这个内嵌的Maven通常会比较新,但不一定很稳定,当然往往也会和我们在命令行使用的Maven 不是同一个版本。
这里又会出现两个潜在的问题,首先,较新版本的Maven存在很多不稳定因素,容易造成一些难以理解的问题。
其次,由于除了IDE,我们也经常还会使用命令行的Maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。
因此,我们应该在IDE中配置Maven插件使用与命令行一直的Maven。
在m2eclipse环境中,点击菜单栏中的Windows,然后选择Perfrences,在弹出的对话框中,展开左边的Maven项,选择Instanllation子项,在右边的面板中,我们能够看到有一个默认的Embedded Maven安装被选中了,点击Add…然后选择我们的Maven安装目录M2_HOME,添加完毕之后选择这一个外部的Maven。
如下图:NetBeans Maven插件默认会侦测PATH环境变量,因此会直接使用与命令行一致的Maven 环境。
点击菜单栏中的工具,选择选项,选择其他标签栏,再选择Maven子标签栏,你就能看到如下的配置:1.4搭建内部仓库管理器仓库管理器有两个服务目的:首先它的角色是一个高度可配置的介于你的组织与公开Maven 仓库之间的代理,其次它为你的组织提供了一个可部署你组织内部生成的构件的地方。
代理Maven仓库有很多好处。
对于一开始使用Maven的情况来说,通过为所有的来自中央Maven仓库的构件安装一个本地的缓存,你将加速组织内部的所有构建。
如果有开发人员想要下载Spring Framework 的2.5版本,并且你在使用Nexus,那些依赖(以及依赖的依赖)只需要从远程仓库下载一次。
如果有一个高速的Internet 网络连接,这看起来没什么大不了,但是如果你一直要求你的开发人员去下载几百兆的第三方依赖,那么真正节省的时间将会是Maven检查依赖新版本以及下载依赖的时间。
通过本地仓库提供Maven依赖服务可以节省数百的HTTP 请求,在大型的多项目构建中,这样可以为一次构件节省几分钟的时间。
除了简单的时间和带宽的节省,仓库管理器为组织提供了一种控制Maven下载的机制。
你可以详细的设置从公开仓库包含或排除特定的构件。
能够控制从核心Maven仓库的下载对于很多组织来说是经常是一个必要前提,它们需要维护一个组织中使用依赖的严格控制。
一个想要标准化某个如Hibernate或者Spring依赖版本的组织可以通过在仓库管理器中仅仅提供一个特殊版本的构件来加强这种标准。
还有一些组织可能关心确保所有外部的依赖拥有和组织的法律规范相容的许可证。
如果一个企业生产了一个分发应用程序,它们可能想要确定没有人不小心添加了一个涉及GPL许可证的依赖。
仓库管理器为那些需要确信总体架构和政策实施的组织提供了这一层次的控制。
除了控制对远程仓库的访问以外,仓库管理器也为Maven的全面使用提供了一些很至关重要的东西。
除非你希望你组织的每一个成员下载并构建一个单独的内部项目,否则你会希望为开发人员和部门之间提供一种共享内部项目构件的快照版本和发布版本的机制。
Nexus为你的组织提供了这样的部署目标。
在你安装了Nexus之后,你可以开始使用Maven让它部署快照版和发布版至一个由Nexus管理的定制仓库。
1.5尽可能的遵循Maven的约定Maven允许你自定义,但不推荐你这么做。
因为一旦你使用这种自定义,习惯Maven约定的人一开始会觉得奇怪。
只有一些特殊的情况,这些自定义手段能帮你解决实际的问题,比如你在处理遗留代码,你没办法改变源码目录结构,这个时候只有让Maven妥协。
其实基本上所有的约定,或者说默认配置,都可以在Maven的超级POM(super pom)中找到。
由于所有的POM都继承了这个超级POM(类似于java中所有类都继承于Object),因此它的默认配置就被继承了。
以Maven 2.0.9为例,你可以在%m2_home%/lib/下看到一个名为maven-2.0.9-uber.jar的文件,打开这个文件,可以找到org /apache/maven/project/pom-4.0.0.xml 这个文件,这就是超级POM。
Maven提供了一套科学的默认配置,它要求你遵循这些配置约定,然后它就会帮你处理日常的事务compile, test, package等等。
使用Maven的时候,你应该尽可能遵循它的配置约定,一方面可以简化配置,另一方面可建立起一种标准,减少交流学习成本。
一旦你习惯了这种约定,你得到的回报是巨大的。
1.6优先编译被依赖的模块假设一个项目C有两个模块,模块A和模块B,其中模块A依赖模块B。
若你直接编译项目C,Maven本应该先编译模块B,再编译模块A,,因为模块A依赖模块B。
但是不幸的是,Maven这方面支持的并不是那么完美。
所以如果模块B有改动,我们应该先编译模块B,再编译整个项目C。
希望Maven会在未来的版本中改进这个问题。
1.7利用Maven插件创建项目当我们需要创建一个基于Maven的项目时,我们可以有两种选择。
一种是遵循Maven约定,自己创建项目需要的所有目录和文件(例如pom.xml),但是这种方式是不被推荐的。
因为这种方式需要手动,而我们往往容易在不经意中犯下错误(例如拼写错误)。
我们可以利用Maven的IDE插件(例如m2eclipse)创建一个基于Maven的项目,这种方式会自动生成Maven项目标准的目录和文件。