繁瑣的任務(wù)簡(jiǎn)單化——Maven搭建Nexus私有倉(cāng)庫(kù)

一、使用Docker安裝Nexus


Docker search nexus

docker pull docker.io/sonatype/nexus3

mkdir -p /usr/local/nexus3/nexus-data

chown -R 200 /usr/local/nexus3/nexus-data

docker run -tid -p 8081:8081 --name nexus -e NEXUS_CONTEXT=nexus -v /usr/local/nexus3/nexus-data:/nexus-data? docker.io/sonatype/nexus3

  現(xiàn)在已經(jīng)安裝完成了 nexus。

二、登錄Nexus進(jìn)行配置

1、登錄nexus

訪問(wèn):http://ip:8081/nexus使用默認(rèn)管理員身份登錄,帳號(hào):admin,密碼:admin123

?2、進(jìn)入管理界面


Browse可以查看當(dāng)前有多少倉(cāng)庫(kù),搭建好的Nexus,默認(rèn)會(huì)帶有一些maven倉(cāng)庫(kù),一般使用這些倉(cāng)庫(kù)就足夠了。

默認(rèn)倉(cāng)庫(kù)說(shuō)明? ??

? ? ? ? ? maven-central:maven中央庫(kù),默認(rèn)從https://repo1.maven.org/maven2/拉取jar

? ? ? ? ? maven-releases:私庫(kù)發(fā)行版jar,初次安裝請(qǐng)將Deployment policy設(shè)置為Allow redeploy

? ? ? ? ? maven-snapshots:私庫(kù)快照(調(diào)試版本)jar

? ? ? ? ? maven-public:倉(cāng)庫(kù)分組,把上面三個(gè)倉(cāng)庫(kù)組合在一起對(duì)外提供服務(wù),在本地maven基礎(chǔ)配置settings.xml或項(xiàng)目pom.xml中使用

倉(cāng)庫(kù)類(lèi)型? ??

Group:這是一個(gè)倉(cāng)庫(kù)聚合的概念,用戶倉(cāng)庫(kù)地址選擇Group的地址,即可訪問(wèn)Group中配置的,用于方便開(kāi)發(fā)人員自己設(shè)定的倉(cāng)庫(kù)。maven-public就是一個(gè)Group類(lèi)型的倉(cāng)庫(kù),內(nèi)部設(shè)置了多個(gè)倉(cāng)庫(kù),訪問(wèn)順序取決于配置順序,3.x默認(rèn)Releases,Snapshots,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Central,當(dāng)然你也可以自己設(shè)置。

Hosted:私有倉(cāng)庫(kù),內(nèi)部項(xiàng)目的發(fā)布倉(cāng)庫(kù),專(zhuān)門(mén)用來(lái)存儲(chǔ)我們自己生成的jar文件

3rd party:未發(fā)布到公網(wǎng)的第三方j(luò)ar (3.x去除了)

Snapshots:本地項(xiàng)目的快照倉(cāng)庫(kù)

Releases:?本地項(xiàng)目發(fā)布的正式版本

Proxy:代理類(lèi)型,從遠(yuǎn)程中央倉(cāng)庫(kù)中尋找數(shù)據(jù)的倉(cāng)庫(kù)(可以點(diǎn)擊對(duì)應(yīng)的倉(cāng)庫(kù)的Configuration頁(yè)簽下Remote Storage屬性的值即被代理的遠(yuǎn)程倉(cāng)庫(kù)的路徑),如可配置阿里云maven倉(cāng)庫(kù)

Central:中央倉(cāng)庫(kù)

Apache Snapshots:Apache專(zhuān)用快照倉(cāng)庫(kù)(3.x去除了)

?3、增加新的代理源

? ? ? ? ? ? ?第一步 按照步驟添加新的代理源

? ? ? ? ? ? ?第二步選擇添加maven2的代理

? ? ? ? ? ? 第三步添加代理(Cache統(tǒng)一設(shè)置為200天 288000)

? ? ? ? ? ?第四步逐個(gè)增加常用代理

1. aliyun

http:

//maven.aliyun.com/nexus/content/groups/public

2. apache_snapshot

https:

//repository.apache.org/content/repositories/snapshots/

3. apache_release

https://repository.apache.org/content/repositories/releases/

4. atlassian

https://maven.atlassian.com/content/repositories/atlassian-public/

5. central.maven.org

http://central.maven.org/maven2/

6. datanucleus

http://www.datanucleus.org/downloads/maven2

7. maven-central (安裝后自帶,僅需設(shè)置Cache有效期即可)

https://repo1.maven.org/maven2/

8. nexus.axiomalaska.com

http://nexus.axiomalaska.com/nexus/content/repositories/public

9. oss.sonatype.org

https://oss.sonatype.org/content/repositories/snapshots

10.pentaho

https://public.nexus.pentaho.org/content/groups/omni/

? ? ? ? ? ? ? 第五步 設(shè)置maven-public?將這些代理加入Group,最好將默認(rèn)的maven庫(kù)放到最底下

? ? ? ? ? ? ? ?第六步?設(shè)置私用倉(cāng)庫(kù)可重復(fù)發(fā)布

? ? ? ? ? ? ? ? ?Nexus安裝后自帶maven-releases,maven-snapshots兩個(gè)倉(cāng)庫(kù),用于將生成的jar包發(fā)布在這兩個(gè)倉(cāng)庫(kù)中,在實(shí)際開(kāi)發(fā)中需要將maven-releases設(shè)置為可以重復(fù)發(fā)布

4、Maven配置使用Nexus

? ? ? ? 修改.m2下面的setting.xml文件配置



Licensed to the Apache Software Foundation (ASF) under one

or more contributor license agreements.? See the NOTICE file

distributed with

thisworkforadditional information

regarding copyright ownership.? The ASF licenses

thisfile

to you under the Apache License, Version

2.0(the

"License"); you may not usethisfile exceptincompliance

with the License.? You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,

software distributed under the License is distributed on an

"AS IS"BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

KIND, either express or implied.? See the License for the

specific language governing permissions and limitations

under the License.

-->


| Thisisthe configuration fileforMaven. It can be specified at two levels:

|

|1. User Level. This settings.xml file provides configurationfora single user,

|? ? ? ? ? ? ? ? andisnormally providedin${user.home}/.m2/settings.xml.

|

|NOTE: This location can be overridden with the CLI option:

|

|? ? ? ? ? ? ? ? -s /path/to/user/settings.xml

|

|2. Global Level. This settings.xml file provides configurationforall Maven

|? ? ? ? ? ? ? ? users on a machine (assuming they're all using the same Maven

|? ? ? ? ? ? ? ? installation). It's normally provided in

|? ? ? ? ? ? ? ? ${maven.conf}/settings.xml.

|

|NOTE: This location can be overridden with the CLI option:

|

|? ? ? ? ? ? ? ? -gs /path/to/global/settings.xml

|

| The sectionsinthissample file are intended to give you a running start at

| getting the mostoutof your Maven installation. Where appropriate, thedefault

| values (values used when the settingisnot specified) are provided.

|

|-->

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">


|The path to the local repository maven will use to store artifacts.

|

| Default: ${user.home}/.m2/repository

-->

${user.home}/.m2/repository


| This will determine whether maven prompts you when it needs input. Ifsettofalse,

| maven will use a sensibledefaultvalue, perhaps based on some other setting,for

| the parameterinquestion.

|

| Default:true

true

-->


|Determines whether maven should attempt to connect to the network when executing a build.

|This will have an effect on artifact downloads, artifact deployment, and others.

|

| Default:false

false

-->


| Thisisa list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.

| when invoking a command line like"mvn prefix:goal". Maven will automatically add the group identifiers

|"org.apache.maven.plugins"and"org.codehaus.mojo"ifthese are not already containedinthe list.

|-->


| Specifies a further group identifier to useforplugin lookup.

com.your.plugins

-->


| Thisisa list of proxies which can be used onthismachine to connect to the network.

| Unless otherwise specified (by system property or command-lineswitch), the first proxy

| specificationinthislist markedasactive will be used.

|-->


| Specificationforone proxy, to be usedinconnecting to the network.

|

optional

true

http

proxyuser

proxypass

proxy.host.net

80

local.net|some.host.com

-->


| Thisisa list of authentication profiles, keyed by the server-id used within the system.

|Authentication profiles can be used whenever maven must make a connection to a remote server.

|-->


|Specifies the authentication information to use when connecting to a particular server, identified by

| a unique name within the system (referred to by the'id'attribute below).

|

| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are

|used together.

|

-->

releases

admin

admin23

snapshots

admin

admin123


siteServer

/path/to/private/key

optional; leave emptyifnot used.

-->


| Thisisa list of mirrors to be usedindownloading artifactsfromremote repositories.

|

| It works likethis: a POM may declare a repository to useinresolving certain artifacts.

| However,thisrepository may have problems with heavy traffic at times, so people have mirrored

|it to several places.

|

| That repository definition will have a unique id, so we can create a mirror referenceforthat

| repository, to be usedasan alternate download site. The mirror site will be the preferred

| serverforthat repository.

|-->


|Specifies a repository mirror site to use instead of a given repository. The repository that

|thismirror serves has an ID that matches the mirrorOf element ofthismirror. IDs are used

|forinheritance and direct lookup purposes, and must be unique across thesetof mirrors.

|

-->

HolliParkMirror

*

HolliPark Repository Mirror.

http://localhost:8082/nexus/repository/maven-public/</url>


| Thisisa list of profiles which can be activatedina variety of ways, and which can modify

| the build process. Profiles providedinthe settings.xml are intended to provide local machine-

| specific paths and repository locations which allow the build to workinthe local environment.

|

| For example,ifyou have an integration testing plugin - like cactus - that needs to knowwhere

| your Tomcat instanceisinstalled, you can provide a variable here such that the variableis

|dereferenced during the build process to configure the cactus plugin.

|

| As noted above, profiles can be activatedina variety of ways. One way -the activeProfiles

| section ofthisdocument (settings.xml) -will be discussed later. Another way essentially

| relies on the detection of a system property, either matching a particular valueforthe property,

| or merely testing its existence. Profiles can also be activated by JDK version prefix,wherea

| value of'1.4'might activate a profile when the buildisexecuted on a JDK version of'1.4.2_07'.

| Finally, the list of active profiles can be specified directlyfromthe command line.

|

| NOTE: For profiles definedinthe settings.xml, you are restricted to specifying only artifact

|? ? ? repositories, plugin repositories, and free-form properties to be usedasconfiguration

|? ? ? variablesforpluginsinthe POM.

|

|-->

HolliPark

nexus

Public Repositories

http://localhost:8082/nexus/repository/maven-public/</url>

true

central

Central Repositories

http://localhost:8082/nexus/repository/maven-central/</url>

true

false

release

Release Repositories

http://localhost:8082/nexus/repository/maven-releases/</url>

true

false

snapshots

Snapshot Repositories

http://localhost:8082/nexus/repository/maven-snapshots/</url>

true

true

plugins

Plugin Repositories

http://localhost:8082/nexus/repository/maven-public/</url>


| Specifies asetof introductions to the build process, to be activatedusingone or more of the

| mechanisms described above. For inheritance purposes, and to activate profiles via

| or the command line, profiles have to have an ID thatisunique.

|

| An encouraged best practiceforprofile identificationisto use a consistent naming convention

|forprofiles, suchas'env-dev','env-test','env-production','user-jdcasey','user-brett', etc.

| This will make it more intuitive to understand what thesetof introduced profilesisattempting

| to accomplish, particularly when you only have a list of profile id's for debug.

|

| This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.

jdk-1.4

1.4

jdk14

RepositoryforJDK1.4builds

http://www.myhost.com/maven/jdk14</url>

default

always

-->


| Hereisanother profile, activated by the system property'target-env'with a value of'dev',

| which provides a specific path to the Tomcat instance. To usethis, your plugin configuration

|might hypothetically look like:

|

|...

|

|? org.myco.myplugins

|? myplugin

|

|?

|? ? ${tomcatPath}

|?

|

|...

|

| NOTE: If you just wanted to injectthisconfiguration whenever someoneset'target-env'to

|? ? ? anything, you could just leave off the inside the activation-property.

|

env-dev

target-env

dev

/path/to/tomcat/instance

-->


| List of profiles that are activeforall builds.

|

alwaysActiveProfile

anotherAlwaysActiveProfile

-->

HolliPark

三、創(chuàng)建私有公庫(kù)

?1、創(chuàng)建普通的maven項(xiàng)目

? 2、修改項(xiàng)目的pom.xml

在pom文件中加入distributionManagement節(jié)點(diǎn),注意:pom.xml中repository里的id需要和.m2中setting.xml里的server id名稱(chēng)保持一致

releases

Nexus Release Repository

http://localhost:8082/nexus/repository/maven-releases/

snapshots

Nexus Snapshot Repository

http://localhost:8082/nexus/repository/maven-snapshots/

3、發(fā)布私有公庫(kù)

? ? ? ? ? ? ? ? ? ? ? ? ? ? 執(zhí)行部署命令即可發(fā)布。

mvn deploy

? ? ? ? ? ? ? ? ? ? ? ? ? ??登錄Nexus,查看對(duì)應(yīng)的倉(cāng)庫(kù)已經(jīng)有相關(guān)的依賴(lài)包了


? ? ? ? ?注意以下幾點(diǎn):? ? ? ? ?

?若項(xiàng)目版本號(hào)末尾帶有 -SNAPSHOT,則會(huì)發(fā)布到snapshots快照版本倉(cāng)庫(kù)

?若項(xiàng)目版本號(hào)末尾帶有 -RELEASES 或什么都不帶,則會(huì)發(fā)布到releases正式版本倉(cāng)庫(kù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容