maven使用nexus3.3在windows下搭建私服
阅读原文时间:2021年09月05日阅读:1

1. 私服简介

私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

2. nexus3的环境安装

下载地址:https://www.sonatype.com/download-oss-sonatype

解压后如下:

3. nexus3的启动

配置完成后,打开cmd或者powershell,进入nexus-3.0.1-01\bin下。

执行:nexus.exe /run

注意斜杠

最后经过一大轮的日志打印,最后出现如下界面,说明nexus私服已经搭建好了

启动成功后,默认用户名admin 密码:admin123

配置路径:D:\server\nexus-3.3.2-02-win64\sonatype-work\nexus3\db\security\user.pcl

    密码重置:

      找到这个地方:admin^ZAdministrator^HUser^Lactive&tianya@zifangdt.com<8c>^B$shiro1$SHA-      512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==

  将1024后面的131个字符删除掉,然后用上述131个字符替换

端口:默认8081

端口配置文件:D:\server\nexus-3.3.2-02-win64\nexus-3.3.2-02\etc\nexus-default.properties   之类的,若在:D:\server\nexus-3.3.2-02-win64\sonatype-work\nexus3\etc\nexus.properties启用,则覆盖前者配置

废话不多说,访问路径:localhost:8081

4. component的介绍

component name的一些说明: 
maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar 
maven-releases:私库发行版jar 
maven-snapshots:私库快照(调试版本)jar 
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。

component type的一些说明: 
hosted:类型的仓库,内部项目的发布仓库 
releases:内部的模块中release模块的发布仓库 
snapshots:发布内部的SNAPSHOT模块的仓库 
3rd party:第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去 
proxy:类型的仓库,从远程中央仓库中寻找数据的仓库

5. maven的settings配置文件

注意一般起效果的配置文件路径:C:\Users\Administrator\.m2\settings.xml    在maven的安装目录下的文件好像不起作用。切记切记

一下是笔者的配置文件,有点多,有时间整理一下,包含了号称史上最快的私服,阿里私服。全文献上!


http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

C:/path/to/local/repo

 <!-- interactiveMode  
| This will determine whether maven prompts you when it needs input. If set to false,  
| maven will use a sensible default value, perhaps based on some other setting, for  
| the parameter in question.  
|  
| Default: true  

true
-->

 <!-- offline  
| 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
-->

 <!-- pluginGroups  
| This is a 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" if these are not already contained in the list.  
|-->  
 <pluginGroups>  
     <!-- pluginGroup  
  | Specifies a further group identifier to use for plugin lookup.  
 <pluginGroup>com.your.plugins</pluginGroup>  
 -->  
     <pluginGroup>org.sonatype.plugins</pluginGroup>  
     <pluginGroup>org.mortbay.jetty</pluginGroup>  
 </pluginGroups>

 <!-- proxies  
| This is a list of proxies which can be used on this machine to connect to the network.  
| Unless otherwise specified (by system property or command-line switch), the first proxy  
| specification in this list marked as active will be used.  
|-->  
 <proxies>  
     <!-- proxy  
  | Specification for one proxy, to be used in connecting to the network.  
  |  
 <proxy>  
   <id>optional</id>  
   <active>true</active>  
   <protocol>http</protocol>  
   <username>proxyuser</username>  
   <password>proxypass</password>  
   <host>proxy.host.net</host>  
   <port>80</port>  
   <nonProxyHosts>local.net|some.host.com</nonProxyHosts>  
 </proxy>  
 -->  
 </proxies>

 <!-- servers  
| This is a 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.  
|-->  
 <servers>  
     <!-- 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.  
  |  
 <server>  
   <id>deploymentRepo</id>  
   <username>repouser</username>  
   <password>repopwd</password>  
 </server>  
 -->

     <!-- Another sample, using keys to authenticate.  
 <server>  
   <id>siteServer</id>  
   <privateKey>/path/to/private/key</privateKey>  
   <passphrase>optional; leave empty if not used.</passphrase>  
 </server>  
 -->  
     <server>  
         <id>nexus</id>  
         <username>admin</username>  
         <password>admin123</password>  
     </server>  
     <server>  
         <id>ali</id>  
         <username>ali</username>  
         <password>ali</password>  
     </server>  
     <server>  
         <id>Snapshots</id>  
         <username>ali</username>  
         <password>ali</password>  
     </server>  
 </servers>

 <!-- mirrors  
| This is a list of mirrors to be used in downloading artifacts from remote repositories.  
|  
| It works like this: a POM may declare a repository to use in resolving certain artifacts.  
| However, this repository 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 reference for that  
| repository, to be used as an alternate download site. The mirror site will be the preferred  
| server for that repository.  
|-->  
 <mirrors>  
     <!-- mirror  
  | Specifies a repository mirror site to use instead of a given repository. The repository that  
  | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used  
  | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.  
  |  
 <mirror>  
   <id>mirrorId</id>  
   <mirrorOf>repositoryId</mirrorOf>  
   <name>Human Readable Name for this Mirror.</name>  
   <url>http://my.repository.com/repo/path</url>  
 </mirror>  
  -->  
     <mirror>  
         <id>nexus</id>  
         <mirrorOf>\*</mirrorOf>  
         <url>http://localhost:8081/repository/maven-public/</url>  
     </mirror>  
     <mirror>  
         <!--This sends everything else to /public -->  
         <id>ali</id>  
         <mirrorOf>\*</mirrorOf>  
         <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
     </mirror>  
     <mirror>  
         <!--This is used to direct the public snapshots repo in the  
       profile below over to a different nexus group -->  
         <id>nexus-public-snapshots</id>  
         <mirrorOf>public-snapshots</mirrorOf>  
         <!--  
   <url>http://10.58.120.19:8058/nexus/content/repositories/snapshots</url>  
        -->  
         <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>  
     </mirror>  
 </mirrors>

 <!-- profiles  
| This is a list of profiles which can be activated in a variety of ways, and which can modify  
| the build process. Profiles provided in the settings.xml are intended to provide local machine-  
| specific paths and repository locations which allow the build to work in the local environment.  
|  
| For example, if you have an integration testing plugin - like cactus - that needs to know where  
| your Tomcat instance is installed, you can provide a variable here such that the variable is  
| dereferenced during the build process to configure the cactus plugin.  
|  
| As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles  
| section of this document (settings.xml) - will be discussed later. Another way essentially  
| relies on the detection of a system property, either matching a particular value for the property,  
| or merely testing its existence. Profiles can also be activated by JDK version prefix, where a  
| value of '1.4' might activate a profile when the build is executed on a JDK version of '1.4.2\_07'.  
| Finally, the list of active profiles can be specified directly from the command line.  
|  
| NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact  
|       repositories, plugin repositories, and free-form properties to be used as configuration  
|       variables for plugins in the POM.  
|  
|-->  
 <profiles>  
     <!-- profile  
  | Specifies a set of introductions to the build process, to be activated using one or more of the  
  | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>  
  | or the command line, profiles have to have an ID that is unique.  
  |  
  | An encouraged best practice for profile identification is to use a consistent naming convention  
  | for profiles, such as 'env-dev', 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.  
  | This will make it more intuitive to understand what the set of introduced profiles is attempting  
  | 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.  
 <profile>  
   <id>jdk-1.4</id>

   <activation>  
     <jdk>1.4</jdk>  
   </activation>

   <repositories>  
     <repository>  
       <id>jdk14</id>  
       <name>Repository for JDK 1.4 builds</name>  
       <url>http://www.myhost.com/maven/jdk14</url>  
       <layout>default</layout>  
       <snapshotPolicy>always</snapshotPolicy>  
     </repository>  
   </repositories>  
 </profile>  
 -->

     <!--  
  | Here is another profile, activated by the system property 'target-env' with a value of 'dev',  
  | which provides a specific path to the Tomcat instance. To use this, your plugin configuration  
  | might hypothetically look like:  
  |  
  | ...  
  | <plugin>  
  |   <groupId>org.myco.myplugins</groupId>  
  |   <artifactId>myplugin</artifactId>  
  |  
  |   <configuration>  
  |     <tomcatLocation>${tomcatPath}</tomcatLocation>  
  |   </configuration>  
  | </plugin>  
  | ...  
  |  
  | NOTE: If you just wanted to inject this configuration whenever someone set 'target-env' to  
  |       anything, you could just leave off the <value/> inside the activation-property.  
  |  
 <profile>  
   <id>env-dev</id>

   <activation>  
     <property>  
       <name>target-env</name>  
       <value>dev</value>  
     </property>  
   </activation>

   <properties>  
     <tomcatPath>/path/to/tomcat/instance</tomcatPath>  
   </properties>  
 </profile>  
 -->  
     <profile>  
         <id>nexus</id>  
         <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>  
     <profile>  
         <id>development</id>  
         <repositories>  
             <repository>  
                 <id>central</id>  
                 <url>http://central</url>  
                 <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>  
                 <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>  
             </repository>  
         </repositories>  
         <pluginRepositories>  
             <pluginRepository>  
                 <id>central</id>  
                 <url>http://central</url>  
                 <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases>  
                 <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>  
             </pluginRepository>  
         </pluginRepositories>  
     </profile>  
     <profile>  
         <!--this profile will allow snapshots to be searched when activated-->  
         <id>public-snapshots</id>  
         <repositories>  
             <repository>  
                 <id>public-snapshots</id>  
                 <url>http://public-snapshots</url>  
                 <releases><enabled>false</enabled></releases>  
                 <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>  
             </repository>  
         </repositories>  
         <pluginRepositories>  
             <pluginRepository>  
                 <id>public-snapshots</id>  
                 <url>http://public-snapshots</url>  
                 <releases><enabled>false</enabled></releases>  
                 <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots>  
             </pluginRepository>  
         </pluginRepositories>  
     </profile>  
 </profiles>

 <!-- activeProfiles  
| List of profiles that are active for all builds.  
|  

alwaysActiveProfile anotherAlwaysActiveProfile
-->
nexus development public-snapshots

6、pom.xml配置

在项目中的pom.xml文件如加入如下代码:

nexus Releases http://localhost:8081/repository/maven-releases nexus Snapshot http://localhost:8081/repository/maven-snapshots

7、总结

从此以后,无论下载还是上传,我们的私服都会记录jar。并且放入私服仓库中,关于如何丰富自己的私服文件,我以后再写文章探讨。

参考网址:http://books.sonatype.com/nexus-book/3.3/reference/install.html#install-sect-downloading

     http://blog.csdn.net/yamaxifeng_132/article/details/52479891

码字不易,尊重原创,转载请注明:https://www.cnblogs.com/adeng/p/7065717.html