如何编译maven工程得到jar、sources、javadoc并上传至Sonatype Nexus OSS

0. 前言

在Maven库中,我们经常可以看到一个jar有jar、sources、javadoc多个子资源,如下图的junit 4.10。如果我们自己的Maven工程也想这样,该怎么办呢?

1. 准备工作

官方文档中,上面这种情况被称作Artifact Bundles,官方描述如下:Artifact Bundles就是指拥有相同GAV坐标(gourpId、artifactId、version)的一组组件。要想编译一个Bundles,你工程的POM文件,必须要包含以下元素。

<project>
	<modelVersion></modelVersion>
	<groupId></groupId>
	<artifactId></artifactId>
	<packaging></packaging>
	<name></name>
	<version></version>
	<description></description>
	<url></url>
	<licenses></licenses>
	<scm></scm>
		<url></url>
		<connection></connection>
	</scm>
</project>

下面是一个最简单是POM.XML的示例

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sonatype.sample</groupId>
  <artifactId>sample-project</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>sample-project</name>
  <description>A Sample Project for the Nexus Book</description>
  <url>http://books.sonatype.com</url>
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>
      scm:git:git://github.com/sonatype/sample-project.git
    </connection>
    <url>http://github.com/sonatype/sample-project.git</url>
    <developerConnection>
      scm:git:git://github.com/sonatype-sample-project.git
    </developerConnection>
  </scm>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

注意,上面例子中<scm></scm>中的链接地址并不需要是自己的私人地址,直接把我这里的拷贝过去用就可以。

2. 编译

修改好pom.xml以后,就可以编译了,编译使用下面的命令。

mvn clean javadoc:jar source:jar repository:bundle-create
上面命令中的clean不是必须的,只是我的个人习惯。另外javadoc:jar是生成javadoc.jar,不加这一句就不会生成javadoc.jar;source:jar是生成sources.jar,同理,不加这一句就不会生成sources.jar;repository:bundle-create是生成bundle.jar,也就是同时包含javadoc.jar、sources.jar以及项目jar的一个压缩包。

编译时,如果一切正常,那么最后会出现一个这样的提示让你选择。这个选择是问你最后生成的bundle.jar不包含哪个组件,不包含谁就选几,如果你有多个组件不包含,就用逗号分隔。如果你用的是Nexus Pro,那么就要选0,我们这里讲解的是Nexus OSS,所以选哪个都没关系,反正最后用不上。


编译成功后的target文件夹是这样的:

打开bundle.jar,可以看到其内部包含了aa-1.0.0.jar、aa-1.0.0-javadoc.jar、aa-1.0.0-sources.jar三个组件,如下图:

3. 上传

注意:只有Nexus Pro才能直接上传bundle,我这里没有Nexus Pro,无法截图,如果你使用的是Nexus Pro,请参考官方文档,文档地址如下:http://books.sonatype.com/nexus-book/reference/staging-deployment.html#fig-staging-component-upload

如果你和我一样,使用的是免费的Nexus OSS,那么请继续:

首先用有上传权限的用户登录Nexus,之后再选中相应的本地库,最后再将pom.xml以及编译好的jar、javadoc.jar、sources.jar分别加入到要上传的组件区,点击上传即可,如下图:

最后,切换回仓库界面,可以看到我们刚上传的组件

4. 参考文献

https://books.sonatype.com/nexus-book/reference/bundles.html
http://books.sonatype.com/nexus-book/reference/staging-deployment.html#fig-staging-component-upload
https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值