安装Maven并搭建Maven私有仓库
一、说明
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。我们在进行Java代码开发的时候,Eclipse+Maven+Jetty是一个十分经典的组合,通过它们能够十分方便的进行项目组织和运行调试。
二、Maven安装
1、访问Maven的官方网站http://www-eu.apache.org/dist/maven/maven-3/下载一个最新稳定版(当然也可以按照个性需求选择),解压之后,放到你想放的位置,然后配置电脑的系统变量、用户变量等。在CMD中执行命令mvn -v如果能出现Maven的版本信息表示你已经安装成功。具体请查看参考文档1。
2、Eclipse集成Maven插件。进入Eclipse的Window --> Preferences --> Maven --> User Setting位置,将Settings位置改为第1步maven文件夹所在位置的conf\settings.cml。如下图所示
三、Maven项目组织建议
1、Java开发习惯于采用MVC框架,为了我们的项目能够结构清晰,我们可以在代码层级组织上就体现这样的结构。只需要将用于体现这个的pom.xml中<packaging>设置为pom,并添加<modules> <module>xxx</module></modules>节点。如下图
2、项目下层的代码使用<parent>节点来建立对上层的依赖,以此类推建立整个项目的层级结构。这样建立之后,方便一起引入,一起编译。并且这样组织之后,就可以在最外层的pom.xml文件中<dependencyManagement><dependencies><dependency>依赖管理中配置引用包的版本管理(可以在最外层指定依赖包的版本信息,里面的模块之间指明那个依赖包就行了,这样可以很方便并且不会遗漏的升级依赖包)。例子可以参考1图中service文件下的pom.xml配置。
3、使用Maven管理项目还可以通过profiles很方便的针对不同环境进行不能的配置。
四、创建Maven私有仓库
为什么要创建Maven私有仓库?因为有些依赖包(例如第三方jar包)是Maven官方公共库(http://mvnrepository.com/search?q=ehcache)没有的,但是项目开发又需要公用的,这种时候就可以把这类依赖包放到Maven私有仓库里。 访问Nexus官网http://www.sonatype.org/nexus/go/下载(下载的时候可能提示地址不存在,翻一下墙就可以了)适合的版本(我们这里下载的nexus-2.12.1-01-bundle.tar.gz)。解压安装包,并切换到安装包文件夹下bin目录,执行启动命令./nexus start(关闭命令是./nexus stop)。在浏览器中输入http://ip:8081/nexus/index.html就能进入。具体请查看参考文档2。Maven私有仓库(Nexus)的使用请查看参考文档5。
补充1:在执行Nexus启动命令./nexus start的时候,可能会报“If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script”异常。在命令行执行export RUN_AS_USER=root就行了。具体请查看参考文档3。
补充2:经过前面的设置应该Nexus已经成功启动了,但是可能浏览器访问的时候还是报“无法访问此网站 [IP]的响应时间过长”。这个时候可能就要检查是否防火墙给你拦截了。如果是开放防火墙的8081端口(Nexus使用的默认端口是8081端口)就行了。具体请查看参考文档4。
参考文档:
1、http://blog.csdn.net/guanning0109/article/details/26069277 eclipse maven插件的安装和配置
2、http://blog.csdn.net/a973893384/article/details/46724227 linux下nexus搭建maven私有库
3、http://blog.csdn.net/cuker919/article/details/12052565 nexus私服linux搭建问题
4、http://blog.163.com/dk_linux/blog/static/203226166201261323349658/ 开放linux防火墙指定接口
5、http://blog.csdn.net/shenshen123jun/article/details/9084293 maven--私服的搭建(Nexus的使用)