您当前的位置: 首页 >  文章详情 网站首页 文章详情

Maven项目连接&发布到Nexus私服

发布时间:2017-9-22 15:23:44 作者:Jastar · Wang 浏览:1609

【前言】

接上一篇。

如果你本地还没有安装maven,那就……传送门

如果你还没有搭建Nexus环境,那就……传送门

【环境】

Windows7 x64Eclipse MarsNexus 2.14.5-02apache-maven-3.3.3JDK1.7

1.Maven项目连接私服

我已经提前准备好了如下工作:

(1)使用Eclipse创建普通的Maven项目

(2)在私服上上传了一个第三方jar包oracle的jdbc驱动,以便测试。

1.1 单一项目连接配置

pom文件project节点下加入如下配置,以下配置只对本项目起作用。

<!-- 配置私服仓库 -->
<repositories>
	<repository>
		<id>nexus</id>
		<name>nexus</name>
		<url>http://192.168.1.80:8081/nexus/content/groups/public/</url>
		<!-- true表示开启该远程仓库中release版本的下载,下同 -->
		<releases>
			<enabled>true</enabled>
		</releases>
		<!-- true表示开启该远程仓库中snapshots版本的下载,下同 -->
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
</repositories>

<!-- 配置私服插件库 -->
<pluginRepositories>
	<pluginRepository>
		<id>nexus</id>
		<name>nexus</name>
		<url>http://192.168.1.80:8081/nexus/content/groups/public/</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</pluginRepository>
</pluginRepositories>

保存之后,再加入oracle驱动包的dependency,经测,可以正常下载依赖,说明该配置没有问题。


1.2 全局连接私服配置

        相对前面的方式,还有一种方式作用效果更为广泛,即修改本机maven安装目录下conf/setting.xml文件的配置,如下:

        注意:以下配置修改之后需要在Eclipse里面进行update setting↓↓↓↓↓↓



(1)方式1:设置镜像mirror

<!-- 只需设置该镜像仓库配置即可 -->  
<mirrors>
	<mirror>
		<id>nexus</id>
		<name>nexus maven</name>
		<url>http://192.168.1.80:8081/nexus/content/groups/public/</url>
		<!-- 还有central等配置 -->
		<mirrorOf>*</mirrorOf>
	</mirror>
</mirrors>

(2)方式2:设置profile

<!-- 
	该配置类似于之前单一项目的连接配置,没错,只不过是拿出来放到了全局setting.xml文件中了;
	 如果两边同时存在id相同的repository,则setting.xml文件中的会覆盖pom.xml文件中的配置 
-->
<profiles>
	<profile>
		<id>nexus profile</id>
		<repositories>
			<repository>
				<id>nexus</id>
				<url>http://192.168.1.80:8081/nexus/content/groups/public/</url>
				<releases>
					<enabled>true</enabled>
					<updatePolicy>daily</updatePolicy>
					<checksumPolicy>warn</checksumPolicy>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<checksumPolicy>fail</checksumPolicy>
				</snapshots>
			</repository>
		</repositories>
		<pluginRepositories>
			<pluginRepository>
				<id>nexus</id>
				<url>http://192.168.1.80:8081/nexus/content/groups/public/</url>
				<releases>
					<enabled>true</enabled>
					<checksumPolicy>warn</checksumPolicy>
				</releases>
				<snapshots>
					<enabled>true</enabled>
					<checksumPolicy>fail</checksumPolicy>
				</snapshots>
			</pluginRepository>
		</pluginRepositories>
	</profile>
</profiles>
<!-- 注意此处要对以上设置进行激活 -->
<activeProfiles>
	<activeProfile>nexus profile</activeProfile>
</activeProfiles>

        至于这两种方式有什么区别嘛,我可以很不负责任的说,我也布吉岛……有兴趣的童鞋可以去百度一哈setting.xml文件的详细解析。


2.发布项目到私服仓库

2.1 首先配置pom.xml

<distributionManagement>
	<repository>
		<!-- 注意:这里的id一定要和setting.xml文件中server下的id保持一致,下同 -->
		<id>nexus-releases</id>
		<name>Local Nexus Repository</name>
		<url>http://192.168.1.80:8081/nexus/content/repositories/releases</url>
	</repository>
	<snapshotRepository>
		<id>nexus-snapshots</id>
		<name>Local Nexus Repository</name>
		<url>http://192.168.1.80:8081/nexus/content/repositories/snapshots</url>
	</snapshotRepository>
</distributionManagement>

2.2 其次配置setting.xml

<!-- 该配置是用于发版打包项目到Nexus时的用户信息认证,注意:该用户一定要有相应的权限才可以 -->
<servers>
	<server>
		<!-- 注意:这里的id一定要和distributionManagement下repository中的id保持一致,下同 -->
		<id>nexus-releases</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
	<server>
		<id>nexus-snapshots</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
</servers>

2.3 最后运行deploy命令发布

都配置完成之后,选择项目右键→Run As→Maven build(第二个)→Goals 中输入“deploy”→Run



如果你看到了以下输出信息,说明已经发布成功了:


查看Nexus上的快照库,已经可以看到项目的jar包了:


        辣么问题来了,以上的配置完成之后是只发布到Snapshots 快照库的,如果想发布一个正式release版本怎么办?偷偷告诉大家,其实这个是在这里控制的,注意不要眨眼睛↓↓↓↓↓↓


        没错,这就是项目pom文件中的开头一段声明,其实maven是通过版本号version中是否带有“-SNAPSHOT”来判断是快照版本还是正式版本;如果想发布正式版本把“-SNAPSHOT”去掉只留版本号即可,加上之后即为快照版本。注意,这里的SNAPSHOT一定要大写,重要的事情只说一遍就行了<(* ̄▽ ̄*)/……


原创声明

1.本文章系原创,版权归本站所有。

2.本站所有文章允许转载,开放分享,但严禁用于任何商业用途。

3.转载文章请务必保留以下信息:
 原文作者:Jastar·Wang(或“代码与酒博客频道”)
 原文链接: