本文转自 http://www.cnblogs.com/gaoxing/p/4359795.html
从来都是从中央仓库下载jar,这次需要向中央仓库提交jar, 利用Sonatype OSSRH可以把jar等资源提交给Maven的中央仓库。
Sonatype OSSRH介绍:
Sonatype OSSRH使用Nexus 为开源项目提供仓库管理服务,该仓库就是所谓maven的中央仓库,OSSRH允许我们向Maven中央仓库提交二进制文件。
1:提交(deploy)开发版本的二进制文件(snapshorts)
2: 阶段性的发布版本
3:发布一个release,然后同步他们到中央仓库。
初始阶段
1:注册一个JIRA账号:https://issues.sonatype.org/secure/Signup!default.jspa
2:创建一个新工程的单:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
只有当这个jira单的状态我resolved时,才可以提交jar包
审查要求
1:提供javadoc和source
2: 使用gpg或者pgp对文件进行签名
3: pom.xml文件
4:正确的坐标:groupId,artifactId,version
<groupId>com.sequoiadb</groupId> <artifactId>sequoiadb-driver</artifactId> <version>1.12</version>
5: projectName,description,url等。
<name>${project.groupId}:${project.artifactId}</name> <description>SequoiaDB Driver Library</description> <url>https://github.com/SequoiaDB/SequoiaDB</url>
6: license 信息
<licenses> <license> <name>The Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses>
7 : 开发者信息
<developers> <developer> <name>linyoubing</name> <email>linyoubing@sequoiadb.com</email> <organization>sequoiadb</organization> <organizationUrl>http://www.sequoiadb.com</organizationUrl> </developer> </developers>
8: SCM信息
<scm> <connection> scm:git:https://github.com/SequoiaDB/SequoiaDB.git </connection> <developerConnection> scm:git:https://github.com/SequoiaDB/SequoiaDB.git </developerConnection> <url>https://github.com/SequoiaDB/SequoiaDB</url> <tag>v1.12</tag> </scm>
部署
可以使用多种方式部署,这是使用maven的方式
1:分布管理和认证:
我使用了maven部署插件,所以pom.xml中加入:
<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>
需要在maven_home/conf/settings.xml配置jira的账号和密码
<settings> <servers> <server> <id>ossrh</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> </servers> </settings>
2:配置生成javadoc和sources包的插件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <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> <version>2.9.1</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
3:GPG自动签名的插件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin>
在settings.xml中配置gpg的签名 :(需要先用gpg来生成)
<settings> <profiles> <profile> <id>ossrh</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.executable>gpg2</gpg.executable> <gpg.passphrase>the_pass_phrase</gpg.passphrase> </properties> </profile> </profiles> </settings>
4: 使用Profile
应该javadoc和source的jar包生成也需要使用gpg来签名,所以很浪费时间,而且这些执行通常都独立于标准构建流程,所以把他们移动到一个profile.
<profiles> <profile> <id>release</id> <build> <plugins> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.3</version> <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> <version>2.5</version> <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> <version>3.0</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <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> <version>2.2.1</version> <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> <version>2.9</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
提交一个snapshot版本:
1:修改version加一个-SNAPSHOT, 执行 mvn clean deploy
发布一个release版本
1:修改version 不要加-SNAPSHOT, 可以手动修改,也可以执行
mvn versions:set -DnewVersion=1.2.3
2: 执行 mvn clean deploy -P release
相关推荐
它简化了大型项目中的依赖关系管理,因为Maven可以通过中央仓库下载所需的库,并自动管理这些库的版本。 **Jenkins** Jenkins则是一个开源的持续集成(Continuous Integration, CI)服务器,最初是作为Hudson的分支...
Maven中央仓库是Java开发者广泛使用的资源库,它允许开发者共享和获取依赖。以下是一个详细的教程,教你如何将Java项目发布到Maven中央仓库。 **一、注册账号和提交申请** 1. **注册账号**: 首先,你需要访问...
本项目基于SSM进行了maven的整合,确保所有使用的jar包都是2017年8月30日在Maven中央仓库中的最新版本,以保证项目的先进性和兼容性。 首先,Spring框架(4.3.10.RELEASE版本)作为整个SSM架构的基础,负责依赖注入...
发布JAR包到Maven中央仓库是一个必要的步骤,以便让全球的Java开发者能够方便地通过Maven构建系统引入你的库作为依赖。Maven中央仓库不直接支持上传,而是需要通过第三方仓库,如Sonatype OSSRH (Open Source ...
如果你想让你的项目构件可供全球的Maven用户使用,你需要遵循一定的流程将它们发布到Maven中央仓库。这个过程包括在Sonatype Nexus Repository Manager上注册,签署构件,然后提交审核。 总的来说,Maven仓库是...
2. **项目依赖管理**: Maven的中央仓库存储了大量的开源库,开发者无需手动下载这些库,只需在POM.xml文件中声明依赖,Maven就会自动下载并管理这些依赖,解决了“jar地狱”问题。同时,Maven支持传递性依赖,意味着...
Maven仓库是存储构建工件(如JAR、WAR等)的地方,分为本地仓库、远程仓库和中央仓库。本地仓库是个人计算机上的存储库,远程仓库则可以是公司内部的私有仓库或公开的第三方仓库。中央仓库是最主要的公共仓库,包含...
然而,有些时候,我们可能需要添加一些不在Maven中央仓库中的第三方Jar包,这时就需要采取特殊的方式来引入这些依赖。本文将详细介绍如何优雅地在Maven项目中添加第三方Jar包。 首先,当遇到Maven无法从中央仓库...
这些仓库可以是中央仓库(默认),也可以是自定义的远程仓库或本地仓库。在本例中,我们将使用GitHub作为远程仓库。 **部署到本地目录** 部署Maven项目到本地目录,你需要在`pom.xml`文件的`...
通过在`pom.xml`文件中声明项目所需的jar包(即依赖),Maven会自动从Maven中央仓库下载这些依赖,避免了手动搜索和添加jar包的繁琐过程。这极大地提高了开发效率,同时也确保了所有团队成员使用的是同一版本的库。 ...
- 中央仓库是Maven内置的一个远程仓库,位于`http://repo1.maven.org/maven2/`。它是面向全球开发者的服务,包含了大量常用的开源库文件,是Maven项目最常用的远程仓库之一。 通过上述内容的介绍,我们可以看到...
Git负责版本控制,Maven处理依赖管理,Nexus作为中央仓库优化构建,而Hudson/Jenkins则实现持续集成和自动化部署。这一套工具链不仅提升了开发效率,还保证了代码质量,是现代软件工程实践中的重要组成部分。对于想...
Maven使用中央仓库来存储公共的开源库,但为了提高下载速度和减少网络拥堵,可以配置本地仓库和远程仓库镜像。通过settings.xml文件,开发者可以设置自己的Maven配置,包括仓库地址、用户名、密码等。 ** 使用Maven...
Maven的中央仓库提供了一个庞大的第三方库集合,团队成员可以通过声明依赖,自动下载并管理这些库,避免了库版本不一致的问题。在`service_shop`项目中,可能有多个依赖,如Spring Boot、MyBatis等,它们在POM.xml...
Dubbox的jar包并没有部署到maven的中央仓库,在Maven的中央仓库中可以查找到Dubbo的最终版本可能是2.5.3,阿里巴巴解散了Dubbo团队后由当当网维护此项目,并改名为dubbox 坐标不变,版本变更了,但是并没有提交到...
Maven通过中央仓库下载项目所需的依赖库,同时也支持自定义本地或远程仓库。此外,Maven提供了多种内置的生命周期阶段和构建目标,如编译、测试、打包、部署等,极大地提高了开发效率。 【SVN】 Subversion(SVN)...
本地仓库是每个开发者机器上的,远程仓库通常由团队或组织共享,中央仓库是 Maven 社区维护的公共库。 - **生命周期**:Maven 生命周期包括清理、编译、测试、打包、验证、集成测试、部署和站点等阶段,每个阶段...
在编译Hadoop之前,Maven会根据配置从中央仓库拉取这些依赖。如果遇到网络问题或特定依赖无法找到,可能需要手动配置镜像源或者指定本地已经存在的依赖路径。 5. **编译步骤**:在源码目录下,使用以下Maven命令...
当项目需要依赖时,Maven首先会在本地仓库查找,如果找不到则会从远程仓库下载,如中央Maven仓库(Central Repository)或其他自定义的远程仓库。 四、Maven生命周期与构建阶段 Maven拥有一个清晰的生命周期,分为...
6. **Maven仓库**:Maven使用中央仓库和其他远程仓库来存储和检索依赖,如Maven Central Repository。 结合这两个工具,开发者可以利用SVN进行版本控制,而Maven则负责项目的构建和依赖管理。在实际开发中,团队...