对于Maven和Nexus,我也是初学者,看了一天,逛了下官网并搜罗了一堆网文,基本在我的电脑上搭建了Maven和Nexus 的环境,并从项目生成到发布都跑了一遍,在这里做一下简要的记录。
首先我们要知道Maven和Nexus分别是什么,他们之间有什么联系和区别:
Maven是一个自动化构建工具
Nexus是一个仓库管理系统
按照以上的定义可以知道,Maven是一个构建工具,用来构建Java Project 生成Jar包(Maven也是利用Ant来构建的)到本地。Nexus是一个仓库管理系统,是用来对Maven构建的结果做管理的。
Maven的下载安装:
下载地址:http://maven.apache.org/download.cgi
选择Files标题下的第二个链接下载(版本号可能不一样),
下载好之后,我们就解压这个文件,我放到了E盘:E:\apache-maven-3.3.3
解压之后需要配置一下环境变量:
MAVEN_HOME,值为E:\apache-maven-3.3.3
Path添加%MAVEN_HOME%\bin
添加好之后测试一把:
打开命令行,敲入mvn -v
如果输出正常,恭喜你Maven环境已经好了。
ps:需要安装JDK环境。
第一次运行这个命令后,会在用户目录下创建一个.m2的目录,这个目录是maven的“本地仓库”
常用的maven命令有:
既然我们已经安装好了Maven环境,那我们就测一把从项目创建到构建Jar的过程(读万卷书还不如自己来一把):
首先我在F盘下面创建了一个文件夹用来放测试project,F:\MarvenRepo
命令行进入到这个目录,执行创建项目的命令:
mvn archetype:generate
悲剧的是,我运行这个命令之后就一直卡在那里,我不愿意等,是什么原因呢,打开调试,重新执行命令:
mvn -X archetype:generate
卡在这了 -> [DEBUG] Searching for remote catalog: http://repo.maven.apache.org/maven2/archetype-catalog.xml
原来是在下载一个什么文件,加个参数 -DarchetypeCatalog=internal 让它不要从远程服务器上取catalog:
mvn -DarchetypeCatalog=internal archetype:generate
终于走下去了,之后还会让你输入一些信息:
groupId:就是说生成的项目属于哪个组(做项目管理好区分),一般是公司域名+group名,如com.company.test
artifactId:项目名称,我输入HelloWorld
version:默认是 1.0-SNAPSHOT,当然可以自己输,我不想输,直接回车
package:生成的项目的包名
一一输入之后,确认生成项目,终于,第一步踏出来了!
看一下项目目录,首先是HelloWorld,下面放着src和pom.xml,src不说了是写代码用的,pom.xml就是项目对象模型,打开来看看:
4.0.0
com.company.test
HelloWorld
1.0.2
jar
HelloWorld
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
除了刚才敲的那些信息,别的看着毫无感觉,先扔一边。
src下面包含main和test,test目录看名字就是拿来做单元测试的,main下面就一个类,App.java,打印HelloWorld...,就这样吧,我们就拿这个来构建Jar。
首先我们需要编译这个项目:
命令行进入HelloWorld项目,输入命令行:
mvn compile
运行后再看HelloWorld,多了一个target目录,里面是编译生成的class字节码文件。
编译完了,完事具备,那就构建Jar吧,输入命令行:
mvn package
运行后,target目录下多了一堆文件,其中有一个是HelloWorld-1.0-SNAPSHOT.jar,喔,终于得到我们想要的东西了。
一般情况下到这里就够了,公司一般会搭建一个Nexus私有仓库来管理这些构建,我们只需要把生成的Jar发布即可,往哪发布呢?版本号是多少呢?这时我们需要修改两个文件,一个是项目(HelloWorld)的pom.xml文件了,打开pom.xml,
版本号可以在
仓库地址,在
nexus-releases
releases
http://localhost:8081/nexus/content/repositories/releases/
nexus-snapshots
snapshots
http://localhost:8081/nexus/content/repositories/snapshots/
另一个就是Maven的settings.xml,还记得刚才把maven解压到哪个目录下了吗,进入目录,settings.xml在conf目录下(当然这个setting.xml是对所有用户、所有项目都有效的,当然还有指定范围的setting.xml,这里暂不考虑),打开,
nexus-releases
admin
admin123
nexus-snapshots
admin
admin123
初学者(包括我)一开始对上面两个配置看的是云里雾里,我在这里简要梳理下(只学了一天,如有错误请大神指正):
pom.xml添加了
setting.xml里面的<server>标签,
好了,敲入发布构建的命令:
mvn deploy
我这里是成功了,打开Nexus一看,嘿,在snapshot下面已经生成构建了,
现在我们是deploy在snapshot目录下的,那么怎么发布release版本呢?
在项目的pom.xml文件里面不是有个
弄到这里,可能有些童鞋公司里没有Nexus仓库,本机也没有,怎么办,那就在本机装一个呗,下载地址:
http://www.sonatype.org/nexus/go/
下载好之后解压,我还是放到E盘,E:\nexus-2.11.4-01-bundle,目录下的sonatype-work中放了配置、日志、仓库。
添加环境变量,以便可以随处使用nexus命令,在Path中添加:E:\nexus-2.11.4-01-bundle\nexus-2.11.4-01\bin
第一次需要安装nexus,使用命令行:
nexus install
安装好之后,开启服务:
nexus start (与之对应的是nexus stop)
等服务开启后,打开浏览器,输入:http://localhost:8081/nexus/
OK,页面打开了,先登录呗,在右上角,用户名admin,密码admin123,当然你也可以改。
在左侧导航栏的Views下面点击Repositories,这个就是仓库。
好了,先到这里,由于我是开发Android的,使用的工具是Android Studio,之后再研究下Gradle对Maven的支持。
Gradle对Maven的支持(Android开发)