zoukankan      html  css  js  c++  java
  • 利用mvn deploy命令上传包(转)

    本文转自https://blog.csdn.net/chenaini119/article/details/52764543

    mvn安装 
    下载maven的bin,在apache官方网站可以下载。 
    https://maven.apache.org/download.cgi

    在PATH里加入maven的bin的路径

    配置完毕后,在Windows命令提示符下,输入mvn -v测试一下。是否安装成功。

    mvn:deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

    以将ojdbc14传到nexus中的thirdparty为例

    一 配置settings.xml

    因为nexus是需要登陆操作,当然可以通过配置免登陆,这是后话。 
    在settings.xml的

    <server>   
    <id>thirdparty</id>   
    <username>admin</username>
    <password>admin123</password>   
    </server>
    • 1
    • 2
    • 3
    • 4
    • 5

    当然如果你要上传包去其他仓库,可依照此例,如

    <server>   
    <id>central</id>   
    <username>admin</username>   
    <password>admin123</password>   
    </server>
    • 1
    • 2
    • 3
    • 4
    • 5

    如果进行deploy时返回Return code is: 401错误,则需要进行用户验证或者你已经验证的信息有误。

    二 cmd输入命令

    mvn deploy:deploy-file -DgroupId=com.vip.vfc -DartifactId=common -Dversion=1.0.0 -Dpackaging=jar -Dfile=E:common.jar -Durl=http://localhost:8081/nexus/content/repositories/releases -DrepositoryId=releases

    DgroupId和DartifactId构成了该jar包在pom.xml的坐标,项目就是依靠这两个属性定位。自己起名字也行。 
    Dfile表示需要上传的jar包的绝对路径。 
    Durl私服上仓库的位置,打开nexus——>repositories菜单,可以看到该路径。 
    DrepositoryId服务器的表示id,在nexus的configuration可以看到。 
    Dversion表示版本信息,怎样得到一个jar包准确的版本呢? 
    解压该包,会发现一个叫MANIFEST.MF的文件,这个文件就有描述该包的版本信息。 
    比如Manifest-Version: 1.0可以知道该包的版本了。

    上传成功后,在nexus界面点击3rd party仓库可以看到这包。

    今天deploy项目时,maven报错401,百度了一下,找到以下文章,解决了问题,所以就考了过来。 
    源地址是:http://www.netingcn.com/maven-deploy-nexus.html

    首先在Nexus中创建一个自己私有的仓库,步骤为Repositories –> Add –> Hosted Repository,在页面的下半部分输入框中填入Repository ID和Repository Name即可,比如分别填入myrepo和 my repository,点击save就创建完成了。

    如果要把构建部署至私服中,需要在构建的 pom.xml 文件增加 distributionManagement 配置项,有多种协议可以用来部署构建,这里主要讲两种。

    第一种配置如下: 
    
    • 1
    • 2
    <project> 
    [...] 
    <distributionManagement> 
    <repository> 
    <id>myrep</id> 
    <name>my repository</name> 
    <url>file:/usr/local/mvn-private-server/nexus-oss-webapp-1.9.2.3/./../sonatype-work/nexus/storage/myrep/</url>
    </repository> 
    </distributionManagement> 
    [...] 
    </project> 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    说明:其中id就是需要部署构建的仓库Id,name似乎不重要,可以随便输入,url就是仓库的configuration中Default Local Storage Location项的对应的信息。采用此种方法,服务器不会对部署操作进行认证,同时配置也把仓库的物理存储地址完全暴露,感觉不是太好。

    第二种配置如下: 
    
    • 1
    • 2
    <project> 
    [...] 
    <distributionManagement> 
      <repository> 
    <id>tagphi</id> 
    <url>http://nexus-server-ip:8081/nexus/content/repositories/myrep</url> 
      </repository> 
    </distributionManagement> 
    [...] 
    </project> 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    说明:上述的distributionManagement信息可以在对于的仓库的Summary中找到。

    配置好后,此时执行mvn deploy,部署应该不会成功,根据提示信息,重新执行 mvn deploy -e 或 mvn deploy -X,此时能看到具体的错误信息,报Return code is: 401错,这个是因为发布者没有权限,需要把用户认证信息配置在maven的settings.xml中,该文件在mavne安装包下的conf目录下,这是一个全局配置,同时可以把该文件复制到 userdir/.m2 目录下,这样配置就只对当前用户生效。在settings.xml文件中servers段中添加如下信息

      <server> 
          <id>myrep</id> 
          <username>deployment</username> 
          <password>password</password> 
        </server> 
    • 1
    • 2
    • 3
    • 4
    • 5

    其中id就是部署仓库的id,username是作为部署用户,Nexus系统默认的deployment,密码为deployment123,可以在security — users中找到,如果需要设置密码,在用户列表中找到该用户,在该用户上点击右键,会出来一个菜单供重置密码或修改密码。此时在执行 mvn deploy,应该可以看到成功发布了。当第二次执行 mvn deploy 又失败,这次失败原因是Return code is: 400,该错误的原因是在创建仓库时在configuration中的Deployment Policy设置为了Disable Redeploy,修改为Allow Redeploy即可。

    私服搭建 
    1.确定已安装maven和jdk环境 
    2.下载nexus http://www.sonatype.org/nexus/go 
    3.解压后进入/bin/jsw目录 
    4.根据本机操作系统选择相应版本,此处以64位windows为例 
    5.双击install-nexus.bat安装nexus服务,然后双击start-nexus.bat启动服务 
    6,访问http://localhost:8081/nexus/,出现下面页面表示安装成功 
    7.点击右上角的Log in,输入默认账号,密码 
    8.点击Server配置服务器信息,勾选Http Proxy Settings,并设置代理服务器 
    9.添加第三方jar包,nexus提供了3rd party、Snapshots、Releases这三个目录存放第三方jar包 
    10.上传第三方jar包 
    11.确定填写无误后,点击Add Artifact(可添加多个),然后点击Upload Artifact上传所有jar包 
    12.上传成功后在可在Releases中查看 
    13.在其他项目的pom.xml中引用 

    <repositories>
        <repository>
            <id>nexus</id>
            <name>Team Nexus Repository</name>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
        </repository>
    </repositories>
    <!-- 插件地址 -->
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>Team Nexus Repository</name>
            <url>http://localhost:8081/nexus/content/repositories/releases/</url>
        </pluginRepository>
    </pluginRepositories>
    <!-- 引用的jar包 -->
    <dependencies>
        <dependency>
            <groupId>com.fibre.hello</groupId>
            <artifactId>helloworld</artifactId>
            <version>0.0.1-Releases</version>
        </dependency>
    </dependencies>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    从Maven项目中导出项目依赖的jar包 
      一、导出到默认目录 targed/dependency 
      从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: 
      1、mvn dependency:copy-dependencies或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入 dependency:copy-dependencies后,点击运行; 
      2、maven项目所依赖的jar包会导出到targed/dependency目录中。 
      二、导出到自定义目录中 
      在maven项目下创建lib文件夹,输入以下命令: 
      1、mvn dependency:copy-dependencies -DoutputDirectory=lib; 
      2、maven项目所依赖的jar包都会复制到项目目录下的lib目录下。 
      三、设置依赖级别 
      同时可以设置依赖级别,通常使用compile级别 
      mvn dependency:copy-dependencies -DoutputDirectory=lib -DincludeScope=compile

  • 相关阅读:
    一个链表,奇数位升序偶数位降序,让链表变成升序的
    LeetCode 046 Permutations 全排列
    LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
    LeetCode 024 Swap Nodes in Pairs 交换链表中相邻的两个节点
    模板实现一个栈(内部使用动态申请的数组作为存储结构)
    004 Median of Two Sorted Arrays 两个有序数组的中位数
    静态链接与动态链接
    sizeof和strlen的区别
    const和define的区别
    lodash
  • 原文地址:https://www.cnblogs.com/panxuejun/p/9143818.html
Copyright © 2011-2022 走看看