文档章节

Maven系列(三):搭建Maven私服Nexus

大蟑螂小小强
 大蟑螂小小强
发布于 2017/01/24 11:05
字数 1291
阅读 53
收藏 1

有个Maven私服可以节省网络带宽,也方便管理我们的jar包和发布构建到远程仓库,本文就介绍了如何在linux下一步步使用nexus搭建maven私服。

下载安装

官网最新Nexus下载地址: https://www.sonatype.com/download-oss-sonatype

解压后会在同级目录中,出现两个文件夹: nexus-oss-webapp-1.8.0sonatype-work ,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。

$ mkdir nexus
$ tar xzvf /home/jili/nexus-2.7.0-05-bundle.tar.gz
$ ls
nexus-2.7.0-05  sonatype-work

启动nexus

$ cd bin/
$ ls
jsw  nexus  nexus.bat
$ ./nexus
Usage: ./nexus { console | start | stop | restart | status | dump }
$ ./nexus start
Starting Nexus OSS...
Started Nexus OSS.

查看控制台:

$ ./nexus console

显示未启动成功,报错如下:

$ ./nexus console
Running Nexus OSS...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
wrapper  | JVM exited while loading the application.
jvm 1    | Exception in thread "main" java.lang.UnsupportedClassVersionError: org/sonatype/nexus/bootstrap/jsw/JswLauncher : Unsupported major.minor version 51.0
jvm 1    |      at java.lang.ClassLoader.defineClass1(Native Method)
jvm 1    |      at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
jvm 1    |      at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
jvm 1    |      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
jvm 1    |      at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
jvm 1    |      at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
jvm 1    |      at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
jvm 1    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 1    |      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
jvm 1    |      at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
jvm 1    |      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
jvm 1    |      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
jvm 1    | Could not find the main class: org.sonatype.nexus.bootstrap.jsw.JswLauncher.  Program will exit.
wrapper  | Reloading Wrapper configuration...
wrapper  | Launching a JVM...
wrapper  | JVM exited while loading the application.
.
.
.
jvm 5    | Exception in thread "main" java.lang.UnsupportedClassVersionError: org/sonatype/nexus/bootstrap/jsw/JswLauncher : Unsupported major.minor version 51.0
jvm 5    |      at java.lang.ClassLoader.defineClass1(Native Method)
jvm 5    |      at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
jvm 5    |      at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
jvm 5    |      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
jvm 5    |      at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
jvm 5    |      at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
jvm 5    |      at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
jvm 5    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 5    |      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
jvm 5    |      at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
jvm 5    |      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
jvm 5    |      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
jvm 5    | Could not find the main class: org.sonatype.nexus.bootstrap.jsw.JswLauncher.  Program will exit.
wrapper  | There were 5 failed launches in a row, each lasting less than 300 seconds.  Giving up.
wrapper  |   There may be a configuration problem: please check the logs.
wrapper  | <-- Wrapper Stopped

原因:查找原因是JDK版本过低造成的,升级到最新的JDK7或者使用nexus-2.4-bundle.tar.gz版本JDK6会支持.

Nexus所有版本下载地址: http://www.sonatype.org/nexus/archived

下载Nexus2.4重来

$ ls
nexus-2.4.0-09  sonatype-work
$ cd nexus-2.4.0-09/bin/
$ ls
jsw  nexus  nexus.bat
$ ./nexus
Usage: ./nexus { console | start | stop | restart | status | dump }
$ ./nexus start
Starting Nexus OSS...
Started Nexus OSS.
$ ./nexus console
Running Nexus OSS...
Nexus OSS is already running.

控制台显示启动成功。

查看nexus日志:

$ cd nexus-2.4.0-09/logs
$ ls
wrapper.log
$ tail -f wrapper.log

配置nexus

访问网址: http://yourhostname:8081/nexus

右上角以admin登陆,默认用户名/密码:admin/admin123。

3rd party、Snapshots、Releases这三个,分别用来保存第三方jar、项目组内部的快照、项目组内部的发布版.

手动添加第三方jar

将第三方的jar上传到nexus上面:

点击Upload Artifact(s)按钮提交后即上传。

查看上传的jar包如下:

在项目中使用私服的jar包配置pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.vclk.mkt.crawler</groupId>
  <artifactId>MarketingCrawler</artifactId>
  <packaging>jar</packaging>
  <version>0.3</version>
  <name>MarketingCrawler</name>
  <url>http://maven.apache.org</url>

  <!-- 仓库地址 -->
  <repositories>
      <repository>
          <id>nexus</id>
          <name>Team Nexus Repository</name>
          <url>http://yourhostname:8081/nexus/content/groups/public</url>
      </repository>
  </repositories>
  
  <!-- 插件地址 -->
  <pluginRepositories>
      <pluginRepository>
          <id>nexus</id>
          <name>Team Nexus Repository</name>
          <url>http://yourhostname:8081/nexus/content/groups/public</url>
      </pluginRepository>
  </pluginRepositories>

  <!-- jar -->
  <dependencies>
      <dependency>
          <groupId>de.innosystec</groupId>
          <artifactId>java-unrar</artifactId>
          <version>0.5</version>
      </dependency>
  </dependencies>
</project>

Maven在项目根目录下执行mvn eclipse:eclipse命令时,所依赖的jar包都会从私服中下载到本地并关联上项目,私服中没有就会从网络上下载到私服,本地再从私服下载。

自动发布构件到远程仓库

在工程的pom.xml中添加:

<distributionManagement>
  <repository>
      <id>nexus-releases</id>
      <url>http://yourhostname:8081/nexus/content/repositories/releases/</url>
  </repository>
  <snapshotRepository>
      <id>nexus-snapshots</id>
      <url>http://yourhostname:8081/nexus/content/repositories/snapshots/</url>
  </snapshotRepository>
</distributionManagement>

进入maven的安装目录apache-maven-3.1.1\conf目录下,向settings.xml配置文件中的 语句块中添加如下所示:

<servers>
  <server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
  </server>
  <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
  </server>
</servers>

进入windows命令行,在工程所在目录下执行

mvn deploy

所部署的包就自动上传到了nexus安装目录下的 /maven/nexus/sonatype-work/nexus/storage/releases/com/vclk/mkt/crawler/MarketingCrawler/0.3 目录

nexus仓库中各目录介绍

项目中的各种jar包和项目快照等都放在 /nexus/sonatype-work/nexus/storage/ 目录下,在这个目录下包括以下各种目录和存放相应文件。

/nexus/sonatype-work/nexus/storage/central - 用于放置maven从中央仓库中下载下来的项目pom.xml中配置到的相关jar包;

/nexus/sonatype-work/nexus/storage/thirdparty - 用于放置自己手动上传的第三方jar包;

/nexus/sonatype-work/nexus/storage/releases - 用于放置项目deploy后的发布版。

 

转载于:http://www.tuicool.com/articles/E7ZBv2

© 著作权归作者所有

大蟑螂小小强
粉丝 7
博文 6
码字总数 5062
作品 0
儋县
程序员
私信 提问
Maven 系列 五 :使用Nexus搭建Maven私服

1 . 私服简介   私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则...

lyg945
2014/06/23
23.8K
4
Linux 下使用 Nexus

为什么要搭建私服? 在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的。另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新。可以通过搭建公...

devin223
2017/06/05
0
0
Maven学习 使用Nexus搭建Maven私服

为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发...

coder_life
2016/08/12
114
0
使用nexus搭建Maven私服

为什么要用远程仓库(私服)? 使用maven的好处就是可以对项目的各种依赖进行统一管理,在pom文件中定以好依赖,就可以从maven中央库或者第三方库中下载到本地。但在企业内部使用也会遇到一些...

沉淀人生
2018/04/11
0
0
使用nexus搭建maven私服

使用nexus搭建maven私服 国内访问maven仓库速度渣渣,公司访问外网速度不快,即使用阿里云镜像效果也不佳。在局域网内搭建Maven私服,除了能从私服加速下载jar包,还能将内部通用模块发布在私...

Elson
2017/11/27
44
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部