Maven+Nexus 环境搭建(Windows)

对于Maven和Nexus,我也是初学者,看了一天,逛了下官网并搜罗了一堆网文,基本在我的电脑上搭建了Maven和Nexus 的环境,并从项目生成到发布都跑了一遍,在这里做一下简要的记录。


首先我们要知道Maven和Nexus分别是什么,他们之间有什么联系和区别:


Maven是一个自动化构建工具

  • Maven项目使用称为项目对象模型(Project Object Model)来配置的。
  • 项目对象模型存储在命名为 pom.xml 的文件中。

Nexus是一个仓库管理系统

  • 建立自己的私服,方便二进制组件分发。(CTRL+C && CTRL+V或者FTP的时代已逝)。
  • 提供公开仓库和自己私服的代理,不需要满世界的抓依赖包(在目前的网络环境下,再加上https,同时如果你是java开发,下个100+M的依赖包很正常;即使有本地cache,那也架不住版本的变化)。
  • 质量问题、版本问题、安全

按照以上的定义可以知道,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命令有:

mvn archetype:generate 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类

既然我们已经安装好了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添加了标签,其中有两个标签,这两个分别有什么用呢?看名字,一个是release版本-即发布的稳定版本,一个是snapshot版本-即不稳定的快照版本(开发阶段还是很有用的),现在两个标签下都有是唯一的标识,名字自己取唯一就好,确保要有可读性,定义Jar最终deploy(发布)到哪个仓库。

setting.xml里面的<server>标签,就是项目pom.xml中distributionManagement标签下的吧,注意必须要一一对应,这样在deploy的时候就不用输入用户名和密码了,不然真的好蛋疼。<username>和<password>可以找Nexus仓库管理员要。


好了,敲入发布构建的命令:

mvn deploy

我这里是成功了,打开Nexus一看,嘿,在snapshot下面已经生成构建了,

Maven+Nexus 环境搭建(Windows)_第1张图片

 现在我们是deploy在snapshot目录下的,那么怎么发布release版本呢?

在项目的pom.xml文件里面不是有个标签吗,控制版本号的,由于刚才生成项目的时候偷懒了,直接回车,所以版本号是默认的1.0-SNAPSHOT,把-SNAPSHOT去掉,只留1.0,再发布一遍试试,这回发布到Nexus仓库的releases下面了,原来Maven是通过版本号是否已-SNAPSHOT结尾来发布release和snapshot的。


弄到这里,可能有些童鞋公司里没有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开发)

你可能感兴趣的:(Maven+Nexus 环境搭建(Windows))