Nexus 的使用
# 130.Nexus 的使用
接下来我们讲讲如何使用 Nexus,这也是工作中常用的功能。
# 配置上传 jar 包
接下来我们演示如何上传我们自己的 Maven 项目到私服中。
首先在 Maven 的配置文件 settings.xml 中,配置关于我们自己私服的认证信息,找到 <servers>
标签,然后在里面加上仓库的私服用户和密码:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
2
3
4
5
6
7
8
9
10
11
分别复制 release 和 snapshot 的地址:
然后在 dao 模块中,配置 pom.xml,加入如下内容:
<distributionManagement>
<repository>
<id>releases</id>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
2
3
4
5
6
7
8
9
10
11
12
13
注意,id 和要 Maven 中的配置文件的 id 对应。
配置完后,我们就可以测试了。我们可以在 IDEA 中直接双击 deploy,或者在命令行执行 mvn deploy
然后控制台会告诉我们结果:上传成功了
注意,deploy 是生命周期的最后一个,那么之前的生命周期也会被执行,例如 mvn install,所以也会安装到本地仓库中。
注意:我们目前仅仅是配置了上传 jar 包,但是没有配置下载 jar 包,所以如果本地仓库没有了这些 jar 包(例如误删了),那么 Maven 还是会首先从本地仓库找,找不到就去远程仓库找,都找不到,最后是会报错的,我们可以测试下,删掉本地仓库的 jar 包:
再次启动就会报错了:Could not find artifact com.peterjxl:LearnJavaMaven_dao
[ERROR] Failed to execute goal on project LearnJavaMaven_web: Could not resolve dependencies for project com.peterjxl:LearnJavaMaven_web:war:1.0-SNAPSHOT: Could not find artifact com.peterjxl:LearnJavaMaven_dao:jar:1.0-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
2
3
4
5
6
7
# 配置从私服下载 jar 包
我们在 Maven 的配置文件 settings.xml 中,找到 <profiles>
标签,然后在里面添加如下配置:
<profile>
<!--profile的id -->
<id>dev</id>
<repositories>
<repository> <!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
<id>nexus</id> <!--仓库地址,即nexus仓库组的地址 -->
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<!--是否下载releases构件 -->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
然后在 <profiles>
标签之外(例如下方)配置使用哪个配置:
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
2
3
然后我们再尝试启动:可以看到从私服里寻找依赖了
# profiles 标签
既然用到了该标签,我们就简单说明下。
开发环境和测试环境的配置通常是不一致的,为了打包方便,为此我们可以定义多个 profile,一套环境一个 profile;然后设置 activeProfiles 来决定使用哪个环境的配置。
除了在 settings.xml 中配置,我们也可以在 pom.xml 文件中配置,并且通过 mvn -P ID 来指定用哪个 profile。
在 IDEA 中,也有可视化界面:
# 总结
本文我们已将 Nexus 最基本的使用讲完了,基本上也够用工作中开发用了。
除此之外,Nexus 还有很多有用的功能,例如用户管理,权限管理,
本项目已将源码上传到 Gitee (opens new window) 和 GitHub (opens new window) 上。并且创建了分支 demo8,读者可以通过切换分支来查看本文的示例代码。
- 01
- 中国网络防火长城简史 转载10-12
- 03
- 公告:博客近期 RSS 相关问题10-02