网站降权如何百度申诉,内蒙古头条新闻发布信息,响应式网站字体大小,wordpress安装数据库连接错误6. Maven的私服
6.1 什么是私服
Maven 私服是一种特殊的远程仓库#xff0c;它是架设在局域网内的仓库服务#xff0c;用来代理位于外部的远程仓库#xff08;中央仓库、其他远程公共仓库#xff09;。一些无法从外部仓库下载到的构件#xff0c;如项目组其他人员开发的…6. Maven的私服
6.1 什么是私服
Maven 私服是一种特殊的远程仓库它是架设在局域网内的仓库服务用来代理位于外部的远程仓库中央仓库、其他远程公共仓库。一些无法从外部仓库下载到的构件如项目组其他人员开发的 jar 包也能从本地上传到私服供其他人使用。
建立了 Maven 私服后当局域网内的用户需要某个构件时会先请求本地仓库若本地仓库不存在所需构件则请求 Maven 私服将所需构件下载到本地仓库若私服中不存在所需构件再去请求外部的远程仓库将所需构件下载并缓存到 Maven 私服若外部远程仓库不存在所需构件则 Maven 直接报错。
6.2 Maven仓库管理器Nexus
6.2.1 什么是Nexus
Nexus 是 Sonatype 公司发布的一款仓库Repository管理软件常用来搭建 Maven 私服所以也有人将 Nexus 称为Maven 仓库管理器。 Sonatype Nexus 是当前最流行使用最广泛的 Maven 仓库管理器。Nexus 分为开源版和专业版其中开源版足以满足大部分 Maven 用户的需求。
6.2.2 Nexus仓库的类型
Nexus 默认内置了很多仓库这些仓库可以划分为 3 种类型每种类型的仓库用于存放特定的 jar 包具体说明如下
hosted宿主仓库。部署自己的 jar 包到这个类型的仓库中包括 Releases 和 Snapshots 两部分Releases 为公司内部发行版本仓库Snapshots 为公司内部测试版本仓库。proxy代理仓库maven-central。用于代理远程的公共仓库如 Maven 中央仓库。用户连接私服私服自动去中央仓库下载 jar 包或者插件。group仓库组maven-public。用来合并多个 hosted/proxy 仓库通常用于配置自己的 Maven 连接仓库组。当我们下载 jar 包时从仓库组中的每个仓库找一遍找到后下载。
6.2.3 Nexus实战
6.2.3.1 运行Nexus控制台
1、以管理员身份打开 cmd进入到 nexus 安装目录的 bin 目录下执行命令nexus /run nexus启动 Nexus 控制台。
启动成功 2、访问 Nexus 工作台http://localhost:8081/ 3、登录 Nexus 工作台
输入账号默认为 admin密码在提示的文件中xxxxxxxxxxxx。在登录过程中需要设置使用账号和密码登录即选择下面的选项以提高安全性。
6.2.3.2 在私服上创建仓库
1、控制台创建仓库
在 Nexus 私服上创建 2 个仓库myphoenix-snapshot 和 myphoenix-release分别作为内侧仓库和发布仓库 选择 maven2(hosted) 取名为 myphoenix-release类型为 Release创建 2、将新建仓库添加到仓库组
创建好 myphoenix-release 仓库后我们可以将自己打包的 jar 包上传到 Nexus 私服。但是我们还想让其他开发人员能够在私服上下载我们上传的 jar。这时需要将此仓库添加到仓库组 maven-public 仓库中。 以同样的方式在 Nexus 私服上创建个人 snapshot 测试库 myphoenix-snapshot。然后将 myphoenix-snapshot 添加到仓库组 maven-public 中去。
此时就将个人的测试仓库和发行仓库添加到 maven-public 中了。 在后面的开发工作中我们可以上传 jar 包到 Nexus 私服其他开发人员可以从私服下载我们上传的 jar 包了。
3、修改私服配置的远程仓库为阿里镜像仓库
将 maven-central 中的中央仓库地址修改为阿里云远程仓库的地址。
可以看到maven-central 默认代理的是 Maven 的中央仓库 为了加快访问速度我们将其修改为阿里的远程仓库
4、修改本地机器的 Maven 配置
修改 Maven 工具访问私服。
在之前的配置中Maven 工具直接配置了阿里的远程仓库现在我们将其配置为私服的地址让 Maven 通过私服下载 jar 包。修改 settings.xml 文件
修改本地仓库创建一个新的本地仓库方便观察到从私服下载 jar 包。修改远程仓库地址为 Nexus 私服的地址。
设置访问 Nexus 私服的用户名和密码 /serversserveridmyphoenix-nexus/idusernameadmin/usernamepasswordxxxxxxxxxxxx/password/server/servers删除原来配置的阿里远程仓库重新配置 Nexus 私服地址用于下载 jar 包 /mirrorsmirror idmyphoenix-nexus/idmirrorOfcentral/mirrorOfnamemynexus/name urlhttp://localhost:8081/repository/maven-public//url /mirror/mirrors打开项目发现 Maven 报错jar 包也没了 刷新 Maven 依赖发现 Nexus 控制台的 maven-public 中有了 jar 包
6.2.3.3 部署jar包至私服从私服下载jar包
上传本地 jar 包到 Nexus 私服
1、创建 maven_nexus 模块。
2、在 maven_nexus 模块中创建一个类 Common在 Common 类中定义一个 sayHi 方法模拟开发的功能。
3、在 maven_nexus 的 pom.xml 文件中配置部署参数。
4、在 maven_nexus 的生命周期中执行 deploy分别将 Snapshot 和 Release 版本部署到私服上。
version 为 1.0-SNAPSHOT上传至内侧仓库。version 为 1.0.0上传至发布仓库。
5、创建 maven_nexus_download 模块模拟同组的其他开发人员在该模块中编写测试类尝试引入 maven_nexus 模块依赖。
pom.xml 配置如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcn.myphoenix/groupIdartifactIdmaven_nexus/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties!--为项目进行部署(上传至私服)参数配置以什么用户名和密码上传到哪个库--distributionManagement!--上传至发布仓库--repositoryidmyphoenix-nexus/idurlhttp://localhost:8081/repository/myphoenix-release//url/repository!--上传至内测仓库--snapshotRepositoryidmyphoenix-nexus/idurlhttp://localhost:8081/repository/myphoenix-snapshot//url/snapshotRepository/distributionManagement/project现将内侧版本上传至内侧仓库 查看控制台信息
C:\Softwares\Developer_Kits\JDK\jdk1.8.0_131\bin\ ......
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------- cn.myphoenix:maven_nexus ----------------------
[INFO] Building maven_nexus 1.0-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) maven_nexus ---
[INFO] Using UTF-8 encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) maven_nexus ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) maven_nexus ---
[INFO] Using UTF-8 encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) maven_nexus ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) maven_nexus ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) maven_nexus ---
[INFO] Building jar: C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\target\maven_nexus-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) maven_nexus ---
[INFO] Installing C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\target\maven_nexus-1.0-SNAPSHOT.jar to C:\Softwares\Developer_Kits\apache-maven-3.8.8\repository\cn\myphoenix\maven_nexus\1.0-SNAPSHOT\maven_nexus-1.0-SNAPSHOT.jar
[INFO] Installing C:\Coding_Gallery\Intellij_IDEA_Workspace\learning_maven\maven_nexus\pom.xml to C:\Softwares\Developer_Kits\apache-maven-3.8.8\repository\cn\myphoenix\maven_nexus\1.0-SNAPSHOT\maven_nexus-1.0-SNAPSHOT.pom
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) maven_nexus ---
Downloading from myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven-metadata.xml
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.jar
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.jar (2.5 kB at 16 kB/s)
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.pom
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven_nexus-1.0-20241128.071034-1.pom (1.2 kB at 8.2 kB/s)
Downloading from myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/maven-metadata.xml
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven-metadata.xml
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/1.0-SNAPSHOT/maven-metadata.xml (767 B at 7.8 kB/s)
Uploading to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/maven-metadata.xml
Uploaded to myphoenix-nexus: http://localhost:8081/repository/myphoenix-snapshot/cn/myphoenix/maven_nexus/maven-metadata.xml (281 B at 3.8 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.498 s
[INFO] Finished at: 2024-11-28T15:10:3808:00
[INFO] ------------------------------------------------------------------------Process finished with exit code 0查看私服上的内侧仓库 myphoenix-snapshot发现部署成功 将 pom.xml 文件中的 version 修改为 1.0.0以相同的方式将其部署到私服的发布仓库 myphoenix-release 中。 在 maven_nexus_download 模块中编写测试类尝试引入发布版本的 maven_nexus-1.0.0.jar。 测试类
public class CommonTest {public void testSayHi() {Common common new Common();common.sayHi();}
}测试通过