Nexus常用功能就是:指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。
开启Nexus服务后访问url地址http://localhost:8081/nexus/(推荐使用自己的ip地址),之后登录系统,用户名密码分别是:admin/admin123.
最频繁的就是点击左侧菜单栏的Repositories按钮
group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库;
hosted 宿主仓库:主要用于发布内部项目构件或第三方的项目构件(如购买商业的构件) 以及无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)
proxy 代理仓库:代理公共的远程仓库;
virtual 虚拟仓库:用于适配 Maven 1;
一般用到的仓库种类是 hosted、proxy
Hosted 仓库常用类型说明:
releases 内部的模块中 release 模块的发布仓库
snapshots 发布内部的 SNAPSHOT 模块的仓库
3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
如果构建的 Maven 项目本地仓库没有对应的依赖包,那么就会去 Nexus 私服去下载, 如果Nexus私服也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。 Nexus 私服下载成功后再下载至本地 Maven 库供项目引用。
1、设置 proxy 代理仓库(Apache Snapshots/Central/Codehaus Snapshots)准许远程下载,
其它两个代理库也设置为true
2.Maven 本地库的安装与配置 setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
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">
<localRepository>D:/maven/repository</localRepository>
<interactiveMode>true</interactiveMode>
<offline>false</offline>
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
<pluginGroup>org.jenkins-ci.tools</pluginGroup>
</pluginGroups>
<!--配置权限,使用默认用户-->
<servers>
<server>
<id>nexus-releases</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
<mirrors>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.7</jdk>
</activation>
<repositories>
<!-- 私有库地址-->
<repository>
<id>nexus</id>
<url>http://127.0.0.1:1818/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--插件库地址-->
<pluginRepository>
<id>nexus</id>
<url>http://127.0.0.1:1818/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--激活profile-->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>
3、将项目发布到私服
pom.xml 添加配置
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:1818/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:1818/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
然后运行发布
clean deploy
在控制台发布成功后
然后进入到私服上的仓库中,看一下确实存在刚刚发布的项目
4.上传第三方jar包
然后点Select Artifact(s) for Upload按钮选择要上传的jar包,再点 add Arifact
最后点 Upload Artifact(s)
上传成功后查看
利用nexus搭建了maven私服,可是上传的第三方jar包不能下载到本地从仓库是什么原因
情况很多,我举一下几种常见情况:
-
如果下载失败一次的话,会生成一个文件在 .update 文件你的本地仓库里面,告诉maven今天之内不要再重复下载这个文件,如果是这种情况,请到 本地仓库手动把这个jar所属的包文件夹删掉再更新,
-
有可能是你的本地仓库没有reindex,如果你用eclipse,在项目上右键 属性 进入 maven -> user setting 然后点击 reindex 按钮,然后在所有项目上 右键,点击 maven->update project
-
有可能你没上传成功,请登录私库,然后查看3rd party 确认你的包有上传成功,如果成功,请点击你的jar包,在右边窗口会显示依赖的xml信息,请手动拷贝出来,然后粘贴到你的pom.xml文件里面,然后update project,因为eclipse的ui界面搜索常常反应迟钝
-
有可能你的私库url配置错误,请打开你的maven settings.xml文件,确认里面的 reposity的地址配置的是你的私库地址
参考
http://blog.csdn.net/xiaoreqing/article/details/51352751
http://www.cnblogs.com/luotaoyeah/p/3817465.html