Nexus3_windows部署及Nuget上传
1. 下载Nexus3 : 地址:
确定已安装jdk,并配置好了环境变量
下载Nexus Repository OSS:https://www.sonatype.com/download-oss-sonatype
记住下载的时候选择下载windos版本的
2. 解压Nexus安装包到D盘
3. 更改运行的IP或者端口
D:\nexus-3.36.0-01-win64\nexus-3.36.0-01\etc\nexus-default.properties
默认是8081的端口
4. 安装为Windos服务
以管理员身份运行CMD命令窗口
5. 进入nexus3安装目录的bin目录下
D:\nexus-3.36.0-01-win64\nexus-3.36.0-01\bin
通过nexus.exe /install nexus3 命令,安装为名为nexus3的Windows服务
这里截图因为我已经安装,所以提示这个:
查看windows服务,并且启动nexus3:
6. 启动成功后运行浏览器输入:127.0.0.1:8081,打开nexus3
7. 更改密码
可以看到admin初始密码是在D:\nexus-3.36.0-01-win64\sonatype-work\nexus3\admin.password文件中,在上面弹出的对话框中输入admin,密码输入上图所示的密码,点Sign In即可完成登录,然后根据提示重置密码。重置密码后,该admin.password就会被删除。
日志,都记录在D:\nexus-3.36.0-01-win64\nexus3\sonatype-work\nexus3\log文件夹下。启动日志,记录在nexus.log中。
8. 增加Nuget
创建一个仓库
仓库介绍 访问的仓库类型:
hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件以及自己或第三方的项目构件;
proxy 代理仓库:代理公共的远程仓库;
group 仓库组:Nexus 通过仓库组统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。
就是你可以上传私有的项目到hosted,以及配置proxy以获取第三方的依赖(比如可以配置中央仓库的地址)。前面两个都弄好了之后,在通过group聚合给客户提供统一的访问地址。
9. 增加Realms
10. 设置API key
这下 仓库 的URL 跟 Api Key都有了。
11 . 项目配置,如果是WebUI 的项目需要在项目配置属性中新增<IsPackable>true</IsPackable>节点。
12. 运行Bat命令,我已写好如下,直接可以执行,则自动上传到Nexus上:
:: 编译项目 :: 批量上传nuget到私库 @echo off :: 指定上传的api key set api_key=28f527fc-8042-3a42-8536-666d03c901cc :: 指定上传的url set source_api_uri=http://127.0.0.1:8081/repository/v3/ :: 指定上传的文件后缀 set deployFile=*.nupkg :: 获取当前文件夹 set startup_dir=%~dp0% :: 输出当前路径 echo 1. current path:%startup_dir% :: 跳转到上级目录 cd.. :: 设置父路径 set parentPath=%cd% :: 输出父路径路径 echo 2. parent path:%parentPath% :: 跳转到项目解决方案目录 :C:\Users\Lenovo\Desktop\SPS_3.1\SPSClient cd c: cd %startup_dir%\SPS_3.1\SPSClient set projectPath=%startup_dir%\SPS_3.1\SPSClient :: 输出项目路径 echo 3. project path:%startup_dir% :: 输出项目 echo 5. start build dotnet pack... :: 编译项目输出pack包 echo 5.1 start build pack SPSClient.Model... dotnet pack %projectPath%\SPSClient.Model\SPSClient.Model.csproj -c Release -o %projectPath%\nupkgs\ echo 5.2 start build pack SPSClient.Helper... dotnet pack %projectPath%\SPSClient.Helper\SPSClient.Helper.csproj -c Release -o %projectPath%\nupkgs\ echo 5.3 start build pack SPSClient.DataAccess... dotnet pack %projectPath%\SPSClient.DataAccess\SPSClient.DataAccess.csproj -c Release -o %projectPath%\nupkgs\ echo 5.4 start build pack SPSClient.Application... dotnet pack %projectPath%\SPSClient.Application\SPSClient.Application.csproj -c Release -o %projectPath%\nupkgs\ echo 5.5 start build pack SPSClient.OMServicesCall... dotnet pack %projectPath%\SPSClient.OMServicesCall\SPSClient.OMServicesCall.csproj -c Release -o %projectPath%\nupkgs\ echo 5.6 start build pack SPSClient.WebUI... dotnet pack %projectPath%\SPSClient.WebUI\SPSClient.WebUI.csproj -c Release -o %projectPath%\nupkgs\ :: 批量推送包 :: 跳转到nupkgs目录下 cd %projectPath%\nupkgs\ dotnet nuget push *.nupkg -k %api_key% -s %source_api_uri% pause :: dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>] :: [--force] [--include-source] [--include-symbols] [--interactive] :: [--no-build] [--no-dependencies] [--no-restore] [--nologo] :: [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>] :: [-s|--serviceable] [-v|--verbosity <LEVEL>] :: [--version-suffix <VERSION_SUFFIX>] :: :: dotnet pack -h|--help :: -o, --output <OUTPUT_DIR> 要放置生成包的输出目录。 :: --no-build 打包之前不要生成项目。Implies --no-restore. :: --include-symbols 除了输出目录中的常规包之外,还包括带符号的包。 :: --include-source 包括 PDB 和源文件。源文件放入 nuget 结果包的“src”文件夹中。 :: -s, --serviceable 在包中设置可用标志。有关详细信息,请参阅 https://aka.ms/nupkgservicing。 :: --nologo 不显示启动版权标志或版权消息。 :: --interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。 :: --no-restore 生成前请勿还原项目。 :: -v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。 :: --version-suffix <VERSION_SUFFIX> 设置生成项目时使用的 $(VersionSuffix) 属性的值。 :: -c, --configuration <CONFIGURATION> 用于生成包的配置。大多数项目的默认值是 "Debug"。 :: --use-current-runtime 将当前运行时用作目标运行时。 :: -?, -h, --help 显示命令行帮助。
生成的文件为:
13. 或者批量上传缓存包
:: 编译项目 :: 批量上传nuget到私库 @echo off :: 指定上传的api key set api_key=28f527fc-8042-3a42-8536-666d03c901cc :: 指定上传的url set source_api_uri=http://127.0.0.1:8081/repository/v3/ :: 指定上传的文件后缀 set deployFile=*.nupkg :: 跳转到缓存目录 cd c: cd C:\Users\Lenovo\.nuget\packages :: 批量推送包 rem dotnet xxx.dll --environment Production rem 启用"延缓环境变量扩充" SETLOCAL ENABLEDELAYEDEXPANSION rem 正在搜索*.nupkg... :: 参数 /R 表示需要遍历子文件夹,去掉表示不遍历子文件夹 :: %%f 是一个变量,类似于迭代器,但是这个变量只能由一个字母组成,前面带上%% :: in 后面括号中是通配符,可以指定后缀名,*.*表示所有文件 for /R %DIR% %%f in (%deployFile%) do ( set name=%%f echo !name! dotnet nuget push !name! -k %api_key% -s %source_api_uri% ) rem 搜索完毕 pause
这里要提前全局设置nuget的命令为全局:
bat文件中配置的缓存为你本地的缓存地址:我的缓存地址是 :
上传成功命令窗口提示:
nexus3 你创建的仓库会出现这些:
14. 最后你本地项目改为你的私库地址
配置VS
打开 vs菜单栏》工具》Nuget包管理器》程序包管理设置
将上面Nexus3的URL配置在VS中,
重新清理解决方案,生成,提示生成成功。私库配置完成