JAVA开源软件开发必备技能
发布构建到maven中央仓库的方法和详细步骤
- sonatype介绍
- 向sonatype提交申请
- 配置maven
- GPG签名
- 发布版本
- 通知sonatype
sonatype介绍
Maven项目托管在Apache上的,但是中央仓库不是Apache的资源,中央仓库是由Sonatype出资维护的。目前来说,http://repo1.maven.org/maven2/是真正的Maven中央仓库的地址。Nexus仓库就是Sonatype开发的,搭建maven私服普遍采用Nexus。
向sonatype提交申请
- 首先需要注册sonatype,地址:https://issues.sonatype.org/browse/OSSRH-19497?filter=-2
- 创建issue,点击Create,选择New Project
- 提交申请,主要填写项目简介,groupId,projectUrl,scmUrl。这里的groupId必须是自己拥有的域名,或者采用com.github.{user}
- 提交申请后,sonatype的工作人员会进行审核,通过后issue的状态变为RESOLVED
配置maven
- 项目基本信息配置,主要包括名称,描述,github地址,开发者信息等
-
<name>Gecco</name> <description>Easy to use lightweight web crawler</description> <url>https://github.com/xtuhcy/gecco</url> <scm> <connection>scm:git:https://github.com/xtuhcy/gecco.git</connection> <developerConnection>scm:git:https://github.com/xtuhcy/gecco.git</developerConnection> <url>https://github.com/xtuhcy/gecco</url> <tag>v1.0.0</tag> </scm> <developers> <developer> <name>xtuhcy</name> <email>xtuhcy@163.com</email> <organization>geccocrawler</organization> <organizationUrl>http://www.geccocrawler.com</organizationUrl> </developer> </developers> <licenses> <license> <name>The MIT License (MIT)</name> <url>https://raw.githubusercontent.com/xtuhcy/gecco/master/LICENSE</url> </license> </licenses>
- 配置source、javadoc打包和gpg签名。上传maven中央库的构建必须包含源码、javadoc,并且对构件jar、源码jar、javadoc的jar进行gpg签名
-
<profiles> <profile> <id>release</id> <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>ossrh</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> </repository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> <useReleaseProfile>false</useReleaseProfile> <releaseProfiles>release</releaseProfiles> <goals>deploy</goals> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
- 打包时只需要添加-P release即可执行上述构件jar、源码jar、javadoc的jar以及签名等一系列操作。如mvn deploy -P release
- 配置上传账户,修改maven的setting.xml,添加刚才注册的sonatype的账号和密码
-
<servers> <server> <id>ossrh</id> <username>memory</username> <password>your password</password> </server> </servers>
- 上述配置完成后还不能成功上传中央库,需要配置gpg签名。生成密钥。
GPG签名
- gpg签名的主要目的就是生成公钥、私钥,并将公钥上传到gpg的密钥服务器上,之后上传maven服务器的文件都可以通过该私钥进行数字签名,以保证是您自己上传到maven服务器上的。
- 第一步,安装gng window下载地址:https://www.gpg4win.org/download.html
- 第二步,生成密钥 gpg --gen-key 除了用户名和邮箱已经密码,其他均可以默认 生成密钥后,可以通过gpg --list-keys查看
- 第三步,上传公钥到gpg服务器 gpg --keyserver hkp://pool.sks-keyservers.net --send-k eys 3E8E57E4 有时不成功,多尝试几次。
发布版本
一切准备就绪,发布版本,mvn deploy -P release。编译后在签名是需要提供刚才生成gpg密钥时输入的密码 到此,一个构件已经发布到中央库,但是能正式下载还需要sonatype的工作人员审核。
最后一步通知sonatype
回到sonatype网站的issue,回复issue,等待审核。审核通过的结果如下: 等待2个小时,您就可以在中央库下载自己的jar了。
这里说明一下自己使用的软件环境:maven3.2.2,eclipse luna
相关推荐
4. **LICENSE** 和 **NOTICE** 文件:提供了Apache软件基金会的版权信息和许可协议,Maven是根据Apache License 2.0发布的开源软件。 5. **README** 文件:通常会提供关于如何安装和使用Maven的基本指南。 6. **...
在软件开发领域,Maven是一个广泛使用的项目管理和综合工具,主要针对Java开发。它通过一个中央仓库系统,帮助开发者管理项目依赖,构建项目,并确保所有依赖库都能正确地下载和集成。本文将深入探讨Maven仓库,特别...
** Maven 3.6.1 知识点详解 ** Maven 是 Apache 软件基金会开发的一个项目管理和综合工具,主要用于Java项目构建、依赖管理和项目信息...了解并掌握Maven的使用,能显著提高开发效率,是Java开发者必备的技能之一。
默认的中央仓库位于Maven官方网站,包含了大量开源Java项目的JAR文件。 2. **依赖管理**:Maven自动管理项目的所有依赖,解决了库版本冲突问题。只需要在POM中声明依赖,Maven会自动解决其依赖树。 3. **生命周期**...
总的来说,Apache Maven 3.3.9是一个强大且成熟的构建工具,它简化了Java项目管理,提高了开发效率,是每个Java开发者必备的工具之一。通过熟悉和掌握Maven,开发者可以更专注于编写业务代码,而不是关注构建过程。
在软件开发领域,Maven作为一款强大的项目管理和构建工具,已经成为Java开发者的必备武器。"Toy-Projects:各种 Maven 项目和任务"是一个专为Java爱好者和初学者设计的资源集合,它包含了一系列用Maven构建的小型项目...
Maven仓库(如Central Repository)提供了大量的开源组件供开发者使用。 3. **插件系统**:Maven通过插件执行构建任务,如编译、测试、打包、部署等。每个插件包含一组目标(Goals),通过命令行或构建生命周期来...
中央仓库包含了大量开源项目的发布版本。 3. **生命周期(Lifecycle)与构建阶段(Phase)**:Maven的生命周期包括了clean、default和site三个主要阶段,每个阶段由一系列的构建阶段组成,如compile、test、package...
Maven是Apache软件基金会下的一个开源项目,主要服务于基于Java平台的项目构建,它通过一个中央信息管理的方式来管理项目的构建和维护工作。Maven的官方网站是***。 Maven的主要优点在于它能够自动化项目的构建过程...
2. **依赖管理**:Maven的中央仓库包含了海量的开源库,插件可以自动帮你管理和下载这些依赖,避免了手动下载jar包的繁琐过程。 3. **构建与打包**:通过Maven插件,你可以执行`clean`、`compile`、`test`、`...
Maven作为Java开发中的必备工具,简化了项目构建和依赖管理,提高了开发效率。通过其POM、坐标系统、生命周期、插件机制和仓库管理,开发者可以专注于编写代码,而将构建工作交给Maven处理。随着Maven的不断发展,...
Maven是Apache软件基金会开发的一款项目管理和综合工具,主要应用于Java项目构建。它通过使用一个项目对象模型(Project Object Model,POM),依赖管理和标准化的生命周期来简化构建过程。Maven通过XML格式的配置...
在Java开发领域,Maven、JDK和Spring Boot是三个至关重要的组件,它们共同构建了高效、便捷的开发环境。让我们深入探讨这三个组件以及在实际使用中可能遇到的问题。 首先,Maven是一个项目管理和综合工具,它通过...
总之,“liferay开发小记——开发环境的搭建”涵盖了从安装必备软件到创建并部署portlet的整个过程。熟悉这个过程将使你在Liferay开发中更加得心应手。在实际操作中,可能还会遇到其他问题,如权限设置、数据库连接...
《 Maven:Java项目构建的得力工具 》 Maven,这个名称源于“汇集”的意思,是Apache软件基金会开发的一款项目管理和综合工具,主要用于Java项目的构建、依赖...理解并熟练使用Maven,是每个Java开发者的必备技能。
《Maven权威指南中文版》是一本针对Java开发者的必备参考书籍,主要讲解了Maven这一强大的项目管理和构建工具的使用方法与最佳实践。Maven是Apache软件基金会下的一个项目,它通过一个中心化的配置文件(pom.xml)来...
Linux环境下使用Maven编译RocketMQ 4.3.0版本是一个涉及Java开发、构建工具Maven以及分布式消息中间件 RocketMQ 的技术实践过程。RocketMQ是阿里巴巴开源的一款高性能、高可用、分布式的消息中间件,广泛应用于...
Nexus是Sonatype公司开发的一款开源的仓库管理器,它在软件开发领域,尤其是Java生态中,扮演着重要角色。Nexus主要服务于Maven、Gradle等构建工具,用于管理和分发软件构件(如JAR文件)。这款工具可以帮助开发者...