1、Maven deploy 打包到远程仓库
mvn deploy 用来将项目工程生成的构件分发到远程Maven仓库。例如:
mvn deploy:deploy-file -DgroupId=com.my -DartifactId=test -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=E:\test.jar -Durl=http://maven.my.com/repository/maven-snapshots/ -DrepositoryId=snapshots
DrepositoryId服务器的表示id,在nexus的configuration可以看到。
我们需要在项目的POM文件中配置distributionManagement来指定Maven分发构件的位置,如下:
<project>
...
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
...
</project>
Maven区别对待release版本的构件和snapshot版本的构件,snapshot为开发过程中的版本,不稳定,release版本则比较稳定。Maven会根据你项目的版本来判断将构件分发到哪个仓库。
一般来说,分发构件到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候需要在本地maven的settings.xml中配置认证信息:
<settings>
...
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
...
</settings>
需要注意的是,settings.xml中server元素下id的值必须与POM中repository或snapshotRepository下id的值完全一致。
2、项目工程从远程仓库下载引用依赖jar包
pom.xml文件引用了一个不存在中央仓库的自定义开发jar包
在pom.xml文件中添加如下声明:
<dependency>
<groupId>com.it.bigdata</groupId>
<artifactId>hbase-core-adapter</artifactId>
<version>1.0.0</version>
</dependency>
如果报错,在本地资源库没有找到,在中央资源库也没找到,需要声明远程私服仓库,到远程仓库去查找依赖
<repositories>
<repository>
<id>java.net</id>
<name>Sonatype Nexus Releases</name>
<url>https://10.90.11.11/content/repositories/release/</url>
</repository>
</repositories>
网友评论