使用Nexus搭建maven私服

环境

  • Ubuntu14.04 64位
  • Jdk 1.8.0_60
  • nexus-2.13.0-01-bundle
  • maven 3.3.3

Nexus安装

下载

从Nexus官网下载开源版本Nexus OSS,选择自带jetty容器的bundle版本nexus-2.13.0-01-bundle.tar.gz:
http://www.sonatype.com/download-oss-sonatype
上述文件放在/opt目录下,并解压(tar -zxvf nexus-2.13.0-01-bundle.tar.gz),得到目录/opt/nexus-2.13.0-01。(以下操作的默认目录)

配置

  • conf/nexus.properties文件
    配置运行端口以及工作目录,以下配置是的Nexus运行在8081端口,工作目录为/opt/sonatype-work。
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF
  • bin/nexus文件
    简便起见,只配置一条信息,即使用root用户运行。
RUN_AS_USER=root

运行

使用以下命令运行:

bin/nexus start

可在浏览器查看是否运行成功,若出现后面的界面则说明运行成功。
点击右上角的登录,使用默认的admin/admin123登录。
http://10.110.13.141:8081/nexus/#welcome

配置文件

  • 设置索引
    点击左侧的Repositories,在Repositories列出的多个库的Configuration的Deployment Policy选择Allow Redeploy;

下载远程索引(Download Remote Indexes),选择True:

  • maven的settings.xml
    配置了搭建的Nexus maven库的镜像地址,以及用户名和密码等。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
  <servers>
	<server>
		<id>releases</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
	<server>
		<id>snapshots</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
  </servers>
  <mirrors>
	<mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>     
      <url>http://10.110.13.141:8081/nexus/content/groups/public/</url>
    </mirror>   
  </mirrors>
  <profiles>
	<profile>
		<id>nexusProfile</id>
		<!--all requests to nexus via the mirror -->
		<repositories>
			<repository>
				<id>central</id>
				<url>http://central</url>
				<releases><enabled>true</enabled></releases>
				<snapshots><enabled>true</enabled></snapshots>
			</repository>
		</repositories>
		<pluginRepositories>
			<pluginRepository>
			<id>central</id>
			<url>http://central</url>
			<releases><enabled>true</enabled></releases>
			<snapshots><enabled>true</enabled></snapshots>
			</pluginRepository>
		</pluginRepositories>
	</profile>
  </profiles>
  <activeProfiles>
    <activeProfile>nexusProfile</activeProfile>
  </activeProfiles>
</settings>

项目通过Maven部署到Nexus

这里指本地开发的项目发布到Nexus的maven仓库中,以便小组其他成员依赖发布的jar包。
本地项目使用IntelliJ IDEA开发,需要在pom.xml文件中加入以下配置:

  • 在project根目录下添加库信息
<groupId>com.inspur.sdk</groupId>
<artifactId>qiandu</artifactId>
<version>1.0-SNAPSHOT</version>
<repositories>
    <repository>
        <id>central</id>
        <name>Central</name>
        <url>http://10.110.13.141:8081/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <name>Central</name>
        <url>http://10.110.13.141:8081/nexus/content/groups/public/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </pluginRepository>
</pluginRepositories>
<distributionManagement>
    <repository>
        <id>releases</id>
        <name>Nexus Release Repository</name>
        <url>http://10.110.13.141:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>Nexus Snapshots Repository</name>
        <url>http://10.110.13.141:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>
  • 在project/build/plugins下添加部署的plugin节点
<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.1</version>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy</goal>
            </goals>
        </execution>
    </executions>
</plugin>

完整的settings.xml和pom.xml文件见附件

  • 部署到Nexus
    在terminal中运行以下命令:
mvn clean deploy

若显示以下信息则提示部署成功:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.934 s
[INFO] Finished at: 2016-07-14T20:22:41+08:00
[INFO] Final Memory: 29M/179M
[INFO] ------------------------------------------------------------------------
  • 搜索依赖
    搜索qiandu,可以在Nexus 库中找到部署的依赖:

本地普通jar包部署到Nexus

  • 选择3rd party或者Releases等库下的Artifact Upload
  • 填写GAV 参数信息
  • 选择上传的jar包
  • Add Artifact
  • Upload Artifact(s)

测试本地Nexus私服

新建maven项目,编写以下依赖,进行Maven测试:

<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.inspur.test</groupId>
  <artifactId>nexus</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>nexus Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <repositories>
    <repository>
      <id>central</id>
      <name>Central</name>
      <url>http://10.110.13.141:8081/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Central</name>
      <url>http://10.110.13.141:8081/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </pluginRepository>
  </pluginRepositories>
  <distributionManagement>
    <repository>
      <id>releases</id>
      <name>Nexus Release Repository</name>
      <url>http://10.110.13.141:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
      <id>snapshots</id>
      <name>Nexus Snapshots Repository</name>
      <url>http://10.110.13.141:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.inspur.loushang</groupId>
      <artifactId>loushang-framework</artifactId>
      <version>2016</version>
    </dependency>
    <dependency>
      <groupId>com.inspur.qiandu</groupId>
      <artifactId>qiandu-utils</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>com.inspur.sdk</groupId>
      <artifactId>qiandu</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>nexus</finalName>
  </build>
</project>

附件

附件1pom.xml
附件2setting.xml

参考资料

【1】SonaType Nexus OSS installation on Ubuntu 14.04 LTS
https://asadbukhariblog.wordpress.com/2015/08/31/sonatype-nexus-oss-installation-on-ubuntu-14-04-lts/

【2】Maven入门指南⑤:使用Nexus搭建Maven私服
http://www.cnblogs.com/luotaoyeah/p/3791966.html

【3】Maven Deploy to Nexus
http://www.baeldung.com/maven-deploy-nexus

【4】Maven及Nexus私服搭建
http://www.blogjava.net/ldwblog/archive/2013/11/19/406529.html

原文地址:https://www.cnblogs.com/myitroad/p/5672314.html