我的电脑配置maven完整教程到底哪里出错

maven配置出错了。求大神帮看看。



业内领先的面向企业的一站式研发提效平台(研发效能),通过项目流程管理和专项自动化提效工具,能够很好地支持互联网敏...


为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...

首先必须推荐的这本书《Maven实战》 许晓斌,机械工业出版社

其实使用Maven也有很久时间了,大部分都是别人建好了工程我使用一下,实际上并没有非常详细的使用经验,这次到新公司来,逼着自己从头开始搭建一个Maven工程,但有了以前的经验,上手还是很快的。

Maven是在Ant之后出现的,能够自动下载构建并管理依赖,这是它与Ant最大的区别。Ant也能实现生命周期的管理,但与Maven相比,付出的成本要更高一下。

通常使用镜像是结合私服,可以通过配置镜像代理任何外部公共仓库(包括中央仓库),可以将配置集中到私服,从而简化maven本身的配置。

Maven的生命周期就是为了对所有的构建过程进行抽象和统一,Maven从其他项目和开发中总结了一套高度完善的、易扩展的生命周期机制。

该生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和生成站点等所有的步骤。

Maven的生命周期是抽闲的,实际的任务交由插件完成,这种思想与设计模式中的模板方法类似,父类中定义整体的处理架构,子类来完成具体实现。

Maven拥有三套生命周期,相互独立,分别为clean、default和site,clean生命周期的目的是清理项目,default的生命周期目的是构建项目,而site生命周期是为了建立项目站点。

每个生命周期包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖前面的阶段,如clean包含pre-clean,clean和post-clean。

default生命周期包含了真正需要构件时所需要执行的所有步骤,它是所有生命周期中最为核心的部分。

处理项目的主资源文件,一般来说,是对/src/main/resources目录的内容进行变量替换之后,复制和输出到主的classpath目录去。

site生命周期的目的是建立和发布站点,Maven能够根据pom的信息,自动生成一个友好的站点,方便团队交流好发布项目信息。

Maven的核心仅仅定义了抽象的生命周期,具体任务是交由插件完成的,插件以独立构件存在。

对于插件本身,为了能够复用代码,往往可以完成多个任务。

Maven的生命周期于插件相互绑定,用以完成实际的构件任务,具体而言,是生命周期阶段与插件目标的相互绑定,以完成某个具体的构建任务。

插件绑定有内部绑定和自定义绑定两周。具体不表。

如果某个插件的配置值对整个项目生效,且不经常改变,可以将其配置到pom.xml中,如我们配置编译插件编译1.5版本的源文件并生成与JVM1.5兼容的字节码。

POM中插件任务的配置

除了为插件配置全局参数,用户还可以为某个插件任务配置特定的参数。如maven-antrun-plugin,它有一个run目标,可以调用Ant任务,用户将maven-antrun-plugin:run绑定到多个生命周期阶段上,再加上不同的配置,就可以实现在不同的生命周期执行不同的任务。

需要注意的是Codehaus可靠性较差

与依赖构件一样,插件构件同样依赖于坐标存放在Maven仓库中,在需要的时候,Maven会到本地仓库查找,如果不存在则从远程仓库下载。

一般来说中央插件库能够完全满足需要,我们没有必要去配置其他插件库。

默认可以不填写groupId,如果插件是Maven官方插件。

聚合和集成对Maven来说是非常必要的,Maven于其他面向对象编程语言一样,都试图减少重复代码并提供继承机制,来减少对pom.xml的配置工作量。

想象这样一种应用场景,如果我们的工程有两个模块,我们想通过一次maven命令的执行来构建这两个模块,Maven的聚合特性就是为这种需求服务的。

为了能够通过执行一次命令就构件两个模块,我们需要创建一个额外的模块,然后通过该模块来构件整个项目。

Modules配置节配置的是子模块的位置,注意需要制定子模块的位置,目录是相对该pom来说的。

为了解决重复问题,Maven设计了pom的继承规则,普通pom继承超级pom,同样的,普通的pom也可以继承依赖和插件等信息,可以继承的项有一个专项列表,这里不赘述。

我们需要创建POM的父子结构,然后提供一些元素给子POM继承,来实现一处生命,多处使用的目的。

同样的,子模块也需要修改才能继承父模块的pom,主要是子pom需要加入parent这一配置节,如下所示:

另外,用户可以在一个POM中,同时提供聚合和集成的功能。

但是还有一种情况:我们在父pom中定义的依赖,不能全部被子pom继承,这样会引入大量的不要的引用,基于此,maven提供了依赖声明和插件声明,用户在父pom中进行依赖生命和插件声明,并定义其版本号,在子pom中继承该pom并声明具体使用哪个依赖。

如此,可以将依赖的版本号设置为全局可控,通常而言,这样的设置已经可以满足要求。

在一个多模块的Maven项目中,反应堆(Reactor)是指所有模块组成的一个构建结构。对于单模块的项目,反应堆就是其本身,但是多模块而言,反应堆就包含了各个模块的构件关系,maven在构建时,可以自动判别依赖,并调整构建顺序。

另外,在构建时,maven还提供了多种命令,来指定具体的构件模块和构建顺序。

在开发java程序时,经常需要部署开发环境、测试环境、生成环境,有的大公司流程复杂,甚至需要部署更多类型的环境。多个环境部署时,问题来了,不同的环境程序的配置文件不一样,需要不停的修改配置文件,非常麻烦,而且很容易出现配置混淆的情况。下面来介绍下如何简单方便的处理不同环境配置文件的切换,就是利用maven的profiles和resources来实现

    • 上面介绍的方法,依赖与idea开发工具来说明的,使用eclipse的用户同样可以通过此方式来管理自己不同环境的配置文件

    经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

    作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

我要回帖

更多关于 maven完整教程 的文章

 

随机推荐