当我们需要下载某个
jar
包时,这时需要从https://repo1.maven.org/maven2/
这里下载(或者其余的外网仓库一般的话都是从这个仓库下载),如果人多加上网络不好,从外网下载jar
包会造成很大的带宽浪费造成网络拥堵。那么这就需要Nexus
来为我们决绝这一问题,进行jar
包管理。它不仅可以管理外网仓库的jar
包还能管理第三方或者我们自己的jar
包。
如何下载
如何安装
-
下载解压后进入文件夹
以管理员权限运行终端,然后
cd
到某盘符\*\nexus-3.7.1-02-win64\nexus-3.7.1-02\bin
-
以命令的形式启动
Nexus
nexus.exe /run
以服务的形式启动
Nexus
nexus.exe /install <optional-service-name> 安装服务
nexus.exe /start <optional-service-name> 开启服务
nexus.exe /stop <optional-service-name> 停止服务
nexus.exe /uninstall <optional-service-name> 卸载服务
例如: nexus.exe /install nexusService 这样服务就安装完了,一定要以管理员权限打开的终端才行,不然会报错
- 修改一些
Nexus
默认基本配置
配置文件在某盘符\*\nexus-3.7.1-02-win64\nexus-3.7.1-02\etc
,文件名nexus-default.properties
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
# 更改端口号,以免与其它的冲突
application-port=9999
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
如何使用
在浏览器输入http://ip:port/
配置与使用
输入默认用户名admin
密码admin123
仓库的类型与创建
-
group
可以按组分,把多个仓库放在同一个组里,组对外相当于访问一个由不同库组成的一个库的集合。对内就是一个组。
-
hosted
我们自定的仓库就是用这种类型
proxy
中央仓库的代理默认为https://repo1.maven.org/maven2/
这个我使用默认的没有新建
与maven配合使用
首先修改或创建Maven 的 settings.xml 文件
。该文件一般在用户名.m2\文件夹下。文件例子如下,因为我把nexus
部署在了windows
机器上,这个settings.xml
在mac
上所以看到目录并非windows
目录。
<?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">
<pluginGroups></pluginGroups>
<proxies></proxies>
<!-- 指定本地仓库位置 -->
<localRepository>/Users/zhangbo/.m2/r</localRepository>
<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>
<mirrors>
<mirror>
<id>nexus-releases</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.1.248:9999/repository/llkj-public-repository/</url>
</mirror>
<mirror>
<id>nexus-snapshots</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.1.248:9999/repository/llkj-publlic-snapshot/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
这样就设置好了,以后所有的包都会从maven
私服下载。私服中没有的才会去从中央仓库中下载。这样每次只要下载一份就可以了。不需要所有人都去外网请求中央仓库的jar
包
maven的形式项目
采用SPRING INITIALIZR初始化spring基于maven项目
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demomaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demomaven</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<distributionManagement>
<!-- 两个ID必须与 setting.xml中的<server><id>nexus-releases</id></server>保持一致-->
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.1.248:9999/repository/llkj-repositories/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.1.248:9999/repository/llkj-snapshot/</url>
</snapshotRepository>
</distributionManagement>
</project>
然后输入命令执行打包上传mvn deploy
成功后查看自定义的快照库是否有刚上传的jar包
gradle的形式项目
采用SPRING INITIALIZR初始化spring基于gradle项目
allprojects {
repositories {
maven {
url "http://192.168.1.248:9999/repository/llkj-public-repository/"
}
}
buildscript {
ext {
springBootVersion = '1.5.4.RELEASE'
}
repositories {
maven {
url "http://192.168.1.248:9999/repository/llkj-public-repository/"
}
}
}
}
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}")
}
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: "http://192.168.1.248:9999/repository/llkj-repositories/") {
authentication(userName: "admin", password: "admin123")
}
pom.project {
name 'demo'
version '0.0.1'
artifactId 'demoTest'
groupId 'com.example'
packaging 'aar'
description 'demo for test'
}
}
}
}
如果想引入自己的jar包那么只需要像以前一样。
compile('groupId:demoTest:version')
gradle 缓存位置
Mac默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1
Windows默认下载到: C:\Users\(用户名)\.gradle\caches\modules-2\files-2.1
官方使用手册地址
Nexus3 官网手册
但是有个问题,就是我根据该手册采用nginx
配置反向代理时,达不到反向代理的效果,不知道是否有大神配出来过,请留言赐教多谢。