maven+nexus的创建和常见操作

Maven 是软件项目管理工具,除了以程序构建能力为特色之外,还提供高级项目管理工具。nexus是一种私服软件,我们常常在搭建maven的时候,会搭建nexus私有仓库,当项目获取项目依赖时(pom.xml中配置),系统会首先在本地仓库寻找需要的依赖包,当没有找到会去私有仓库查找,还没有找到,会去中央仓库查找。还有另一种场景,一些公司有一些自己的jar包,不需要外面的人获取或者是中央央仓库找不到的包,会将jar包发布到私有仓库,而私有仓库会搭建在内网上,这样外面的人就无法获取。另附mavenSearch平台maven-search
常常有人在问maven有什么用,为什么要用maven,其实我自己也不是很懂,就简单说一下我知道的.

  1. maven可以管理项目的jar包,统一项目的jar版本,便于多开发人员的jar包统一。
  2. maven可以对于多项目可以统一配置依赖,也可以使用模块开发。
  3. maven 集成了一连串的命令,一键化编译测试发布打包 等等。
  4. 使用maven构建的模块可以一串代码重复使用,提高开发速度。

一:Linux 上搭建maven

  1. 先下载maven的安装文件apache-maven-3.0.3-bin.tar.gz
  2. 进入下载文件夹找到下载的文件解压:
    tar -xvf apache-maven-3.0.3-bin.tar.gz
    解压后的文件夹为apache-maven-3.0.3
  3. 使用mv命令将apache-maven-3.0.3文件夹拷贝到自己指定的文件夹,比如/usr/local/下
    mv -rf apache-maven-3.0.3 /usr/local/
  4. 配置环境变量,编辑/etc/profile文件,添加如下代码
    export MAVEN_HOME=/usr/local/apache-maven-3.0.3
    export PATH=${PATH}:${MAVEN_HOME}/bin
  5. 保存文件,并运行如下命令使环境变量生效
    source /etc/profile
  6. 在控制台输入如下命令,如果能看到Maven相关版本信息,则说明Maven已经安装成功
    mvn -version

二:Linux 上搭建本地仓库

  1. 下载nexus,下载地址为http://www.sonatype.org/nexus/go得到nexus-2.14.5-02-bundle.tar.gz

  2. 下载完成后将nexus-latest-bundle.tar.gz拷贝到/usr/local/目录下,并进入/usr/local目录
    sudo cp nexus-2.14.5-02-bundle.tar.gz /usr/local/
    cd /usr/local

  3. 解压nexus-2.14.5-02-bundle.tar.gz
    tar -zxvf nexus-latest-bundle.tar.gz
  4. 编辑nexus脚本,配置RUN_AS_USER参数
    cd /usr/local/nexus-2.14.5-02/bin
    vi nexus
    将#RUN_AS_USER=改为RUN_AS_USER=root
    保存退出
  5. 在/usr/local/nexus-2.14.5-02/conf/nexus.properties中配置的application-port=8081
    vi nexus.properties

  6. 运行nexus
    ./bin/nexus start
    在浏览器中访问:ip:8081/nexus ,输入用户名与密码(默认的admin、admin123)就可以管理自己的maven本地仓库了.

三:私有仓库的使用

登录nexus网址,我们会看到如下画面:
这里写图片描述
简单介绍一下文件的目录:
public Reoisitories:group类型,在下面的configuration下可以将各个仓库放在一起,引入资源包的时候就可以使用一个url
3rd party:hosted类型,我们自己的不希望外部的人访问到的包,都放在这个仓库
central:proxy类型,我们在私有仓库找不到的包,会通过上面的映射地址去下载即中央仓库下载,下载下来的包都会放在这个仓库中。
releases:hosted类型,一般放置自己项目中发布的构建,通常是release版本
snapshots:hosted类型,发布一些非release版本,非稳定版本。
当然这些都是默认的库,你也可以自己建库,这里不再细讲。

如何上传自己的包:
这里写图片描述
这里写图片描述
这里写图片描述

四:maven的简单配置

maven最常规的用法是作为管理包的工具
在pom.xml文件中配置dependencies标签将自动导入jar包。

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  <dependencies>

如果要使用私有仓库,在要使用私有仓库的项目pom文件中,添加

<repositories>
    <repository>
        <id>nexus</id>
        <name>nexus name</name>
        <url>htttp://10.66.106.21:8081/nexus/content/group/public</url>
        <releases>
            <enable>true</enable>
        </releases>
        <!--默认是关闭的-->
        <snapshots>
            <enable>true</enable>
        </snapshots>
    <repository>
</repositories>

如果需要在多个项目中使用私有仓库,可以直接在maven的setting文件中配置

<profiles>
<profile>
        <id>nexusProfile</id>
        <repositories>
            <repository>
                <id>nexus</id>
                <name>Nexus repository</name>
    <url>http://10.66.106.21:8081/nexus/content/groups/public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
    </profile>


  </profiles>
 <!--只有激活才生效-->
    <activeProfiles>
        <activeProfile>nexusProfile</activeProfile>
    </activeProfiles> 

说句题外话,如果你不想更改系统的setting文件也可以另外建一个本地仓库,以eclipse为例,在window->preferences->maven->user Setting下更改本地仓库目录,复制一份setting文件到新目录下,更改里面的本地仓库目录:

<localRepository>D:\debug\apache-maven-3.5.0\localmaven\repo</localRepository>

如果想要覆盖中央仓库的默认地址,强制依赖的东西都到nexus中找,即使nexus关闭也不会到中央仓库下载可以在setting文件中设置镜像:

<mirror>  
          <id>nexusMirror</id>  
          <mirrorOf>,nexus,central</mirrorOf>  
          <name>Human Readable Name for this Mirror.</name>  
         <url>http://10.66.106.21:8081/nexus/content/groups/public</url>  
</mirror>

因为网络原因下载不了或者缓慢,也可以在镜像标签更换中央仓库的地址。

五:maven的多项目管理

maven也常常应用于多模块的项目。
搭建多模块的项目,必须要有一个packageing为pom的根目录,新建一个新的maven项目,如parent

<modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>parent</name>
  <url>http://maven.apache.org</url>

然后新建maven module,如core,web1,web2,webMain等,web1,web2,webMain模块是web项目,其他都是java项目。以web1模块的pom为例:

<modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.example</groupId>
  <artifactId>web1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>web Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>core</artifactId>
        <version>${project.version}</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>web1</finalName>
  </build>

parent标签下是我们的主管理项目
groupId是项目组的编号是独一无二的。
artifactId是项目ID,通常是项目的名字
versosn是项目的版本号
packing是整个项目的类型
dependencis是项目的依赖,一旦用到的jar包或者其他项目模块都要在上面声明。

一旦创建了子模块,在父模块中要声明如:

<modules>
    <module>core</module>
    <module>web1</module>
    <module>web2</module>
    <module>webMain</module>
    <module>core</module>
  </modules>

webMain模块是统合所有的web模块,在webMain模块中需要添加web1,web2的依赖,并且声明其打包类型

<dependency>
        <groupId>com.example</groupId>
        <artifactId>web1</artifactId>
        <version>${project.version}</version>
        <type>war</type>
    </dependency>
      <dependency>
        <groupId>com.example</groupId>
        <artifactId>web2</artifactId>
        <version>${project.version}</version>
        <type>war</type>
    </dependency>

然后调用maven的命令,对parent这个项目打包,使用maven build命令统一使用各种命令如clean install 先清空在打包,在项目各个项目目录下会产生各自的jar包或者war包。

六:maven的常用命令

maven可以对一些操作以命令的形式统一执行以eclipse为例:
项目右键run as->maven->maven build中执行多条语句:
package 项目打包
clean 删除target目录下编译的内容
compile 编译项目
test 运行测试
install 在本地Repository中安装jar/war
deploy 发布到远程仓库(需要配置插件)
网上还有很多插件的命令如启动tomact等等。。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值