准备材料:

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

IntelliJ IDEA下载地址:https://www.jetbrains.com/idea/download/

Maven配置:

  settings.xml配置:(参考)




搭建内网 maven 仓库_java

搭建内网 maven 仓库_运维_02

1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4           xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5 
  6     <!--自定义本地仓库路径-->
  7     <localRepository>D:\Users\59403\repository</localRepository>
  8 
  9     <!--Maven是否需要和用户交互以获得输入。如果Maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。 -->
 10     <interactiveMode>true</interactiveMode>
 11 
 12     <!--Maven是否需要使用plugin-registry.xml文件来管理插件版本。  -->
 13     <!--如果设置为true,则在{user.home}/.m2下需要有一个plugin-registry.xml来对plugin的版本进行管理  -->
 14     <!--默认为false。 -->
 15     <usePluginRegistry>false</usePluginRegistry>
 16 
 17     <!--表示Maven是否需要在离线模式下运行。如果构建系统需要在离线模式下运行,则为true,默认为false。  -->
 18     <!--当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。  -->
 19     <offline>false</offline>
 20 
 21     <!--
 22     当插件的组织Id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。
 23     该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。
 24     当我们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表。
 25     默认情况下该列表包含了org.apache.maven.plugins。
 26     <pluginGroups>
 27         plugin的组织Id(groupId)
 28         <pluginGroup>org.codehaus.mojo</pluginGroup>
 29     </pluginGroups>
 30     -->
 31     <!--
 32     用来配置不同的代理,多代理profiles可以应对笔记本或移动设备的工作环境:通过简单的设置profile id就可以很容易的更换整个代理配置。
 33     <proxies>
 34         代理元素包含配置代理时需要的信息
 35         <proxy>
 36             代理的唯一定义符,用来区分不同的代理元素
 37             <id>myproxy</id>
 38             该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。
 39             <active>true</active>
 40             代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。
 41             <protocol>http://…</protocol>
 42             代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。
 43             <host>proxy.somewhere.com</host>
 44             代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。
 45             <port>8080</port>
 46             代理的用户名,用户名和密码表示代理服务器认证的登录名和密码。
 47             <username>proxyuser</username>
 48             代理的密码,用户名和密码表示代理服务器认证的登录名和密码。
 49             <password>somepassword</password>
 50             不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。
 51             <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
 52         </proxy>
 53     </proxies>
 54     -->
 55 
 56     <!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。 -->
 57     <servers>
 58         <server>
 59             <!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。 -->
 60             <id>nexus-releases</id>
 61             <!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。  -->
 62             <username>admin</username>
 63             <!--鉴权密码 。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。  -->
 64             <password>admin123</password>
 65             <!--
 66             将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。
 67             <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
 68             鉴权时使用的私钥密码。
 69             <passphrase>some_passphrase</passphrase>
 70             文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。
 71             这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775。
 72             <filePermissions>664</filePermissions>
 73             -->
 74         </server>
 75         <server>
 76             <id>nexus-snapshot</id>
 77             <username>admin</username>
 78             <password>admin123</password>
 79         </server>
 80     </servers>
 81 
 82     <!--为仓库列表配置的下载镜像列表。  -->
 83     <mirrors>
 84         <!--给定仓库的下载镜像。  -->
 85         <mirror>
 86             <!--该镜像的唯一标识符。id用来区分不同的mirror元素。  -->
 87             <id>nexus</id>
 88             <!--镜像名称  -->
 89             <name>internal nexus repository</name>
 90             <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。  -->
 91             <url>http://192.168.0.107:8081/repository/maven-public/</url>
 92             <!--被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo1.maven.org/maven2)的镜像,-->
 93             <!--就需要将该元素设置成central。这必须和中央仓库的id central完全一致。 -->
 94             <mirrorOf>*</mirrorOf>
 95         </mirror>
 96     </mirrors>
 97 
 98     <profiles>
 99         <!--根据环境参数来调整的构件的配置 -->
100         <profile>
101             <!--该配置的唯一标识符。  -->
102             <id>nexus</id>
103             <!--远程仓库列表,它是Maven用来填充构建系统本地仓库所使用的一组远程项目。  -->
104             <repositories>
105                 <!--包含需要连接到远程仓库的信息  -->
106                 <repository>
107                     <!--远程仓库唯一标识 -->
108                     <id>my-nexus</id>
109                     <!--远程仓库名称  -->
110                     <name>Nexus</name>
111                     <!--远程仓库URL,按protocol://hostname/path形式  -->
112                     <url>http://192.168.0.107:8081/repository/maven-public/</url>
113                     <!--如何处理远程仓库里发布版本的下载 -->
114                     <releases>
115                         <!--true或者false表示该仓库是否为下载某种类型构件(发布版,快照版)开启。   -->
116                         <enabled>true</enabled>
117                     </releases>
118                     <!--如何处理远程仓库里快照版本的下载。有了releases和snapshots这两组配置,POM就可以在每个单独的仓库中,为每种类型的构件采取不同的策略。-->
119                     <!--例如,可能有人会决定只为开发目的开启对快照版本下载的支持。参见repositories/repository/releases元素 -->
120                     <snapshots>
121                         <enabled>true</enabled>
122                     </snapshots>
123                 </repository>
124             </repositories>
125         </profile>
126     </profiles>
127     <!--手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。 该元素包含了一组activeProfile元素,每个activeProfile都含有一个profile id。-->
128     <!--任何在activeProfile中定义的profile id,不论环境设置如何,其对应的 profile都会被激活。-->
129     <!--如果没有匹配的profile,则什么都不会发生。例如,env-test是一个activeProfile,则在pom.xml(或者profile.xml)中对应id的profile会被激活。-->
130     <!--如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。  -->
131     <activeProfiles>
132         <activeProfile>nexus</activeProfile>
133     </activeProfiles>
134 </settings>


View Code


父pom.xml:




搭建内网 maven 仓库_java

搭建内网 maven 仓库_运维_02

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>xiely</groupId>
 8     <artifactId>xiely</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <packaging>pom</packaging>
11 
12     <properties>
13         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
14         <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
15         <java.version>11</java.version>
16         <maven.compiler.source>11</maven.compiler.source>
17         <maven.compiler.target>11</maven.compiler.target>
18     </properties>
19 
20     <distributionManagement>
21         <repository>
22             <id>nexus-releases</id>
23             <name>naven-public</name>
24             <url>http://192.168.0.107:8081/repository/maven-releases/</url>
25         </repository>
26         <snapshotRepository>
27             <id>nexus-snapshot</id>
28             <name>naven-public</name>
29             <url>http://192.168.0.107:8081/repository/maven-snapshots/</url>
30         </snapshotRepository>
31     </distributionManagement>
32 
33     <modules>
34         <module>xiely-common-api</module>
35     </modules>
36 </project>


View Code


  子pom.xml:




搭建内网 maven 仓库_java

搭建内网 maven 仓库_运维_02

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <parent>
 8         <groupId>xiely</groupId>
 9         <artifactId>xiely</artifactId>
10         <version>1.0-SNAPSHOT</version>
11     </parent>
12 
13     <groupId>xiely-common-api</groupId>
14     <artifactId>xiely-common-api</artifactId>
15     <version>1.0-SNAPSHOT</version>
16     <packaging>jar</packaging>
17     <name>xiely-common-api</name>
18 
19     <dependencies>
20         <dependency>
21             <groupId>junit.4.10</groupId>
22             <artifactId>junit.4.10</artifactId>
23             <version>4.10</version>
24         </dependency>
25         <dependency>
26             <groupId>jaxb-api.2.2.7</groupId>
27             <artifactId>jaxb-api.2.2.7</artifactId>
28             <version>2.2.7</version>
29         </dependency>
30         <dependency>
31             <groupId>lombok.1.18.6</groupId>
32             <artifactId>lombok.1.18.6</artifactId>
33             <version>1.18.6</version>
34         </dependency>
35     </dependencies>
36 </project>


View Code


启动Nexus:

win+r;D:\Nexus\nexus-3.15.2-01\bin>nexus.exe/run(可配置环境变量简化运行,配置方式如jdk)

D:\Nexus\nexus-3.15.2-01\bin>nexus.exe/run

  如图为启动成功:

搭建内网 maven 仓库_开发工具_07

登陆maven库,浏览器输入:http://{本机ip}:8081/

默认账号:admin/admin123

上传jar包:

搭建内网 maven 仓库_开发工具_08

 

 创建Maven工程:

搭建内网 maven 仓库_开发工具_09

搭建内网 maven 仓库_maven_10

填写一些id后,Next就可以了。

配置父pom.xml:

搭建内网 maven 仓库_开发工具_11

创建子模块:

File->Project Structure->+添加子模块,然后配置子模块的pom.xml

搭建内网 maven 仓库_maven_12