Maven中央仓库构建上传心得

原创 2015年07月09日 14:01:29

经过一番努力,终于把自己的构建上传到了Maven的中央仓库,在此记录下自己的心得:

首先,自然是去https://issues.sonatype.org创建自己的申请(Issue),为了填写里面的信息,又去github上注册了自己的地址,由于工作人员是老美,大概每天北京时间晚上10点上班,所以只有跟着他切换模式了...

之后,收到工作人员的询问,是否拥有域名?我查看一下,他也不是每个人都会问,大概是因为我填写的group id 和project url差太多吧!所以暂且推测,project url包含group id中的域名部分,多半就不会被问到了。

经过一番交流,工作人员批准了group id, 他还把group id改成了仅保留域名部分,还是挺周到的。


之后就是要上传了,这里又遇到了问题:由于闲着也没事儿干,就在Joel审批前把component上传了一次,结果收到403错误,无奈,晚上10点又跑去找这个Joel:


这下彻底明白了,重新上传,一切搞定,然后去通知Joel审核发布的组件:


至此,发布成功,2小时后可以使用。在http://search.maven.org/可以搜索到就成了,不过我上传的这段时间服务器在维护,所以比较悲剧的又开始了晚上10点模式,提单继续找Joel,回复如下:


在上传的过程中,maven会要校验源码和java doc,由于我是做公司的项目,不能公开源码,非常头疼,搞了我一两天,想了各种办法,不过最后还是解决了,办法嘛!我只能说:每个组件文件的上传,后一次覆盖前一次的文件,毕竟咱们还是要支持开源的。


最后,把pom.xml贴出来:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId><span style="font-family: Arial, Helvetica, sans-serif;">groupId</span><span style="font-family: Arial, Helvetica, sans-serif;"></groupId></span>
	<artifactId><span style="font-family: Arial, Helvetica, sans-serif;">artifactId</span><span style="font-family: Arial, Helvetica, sans-serif;"></artifactId></span>
	<packaging>jar</packaging>

	<name>name</name>
	<version>1.0.0</version>
	<url>url</url>
	<description>description</description>

	<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>

	<developers>
		<developer>
			<id>zach</id>
			<name>Zach Liu</name>
			<email>email</email>
		</developer>
	</developers>

	<scm>
		<connection>scm:git:git@github.com:xxx/xxx.git</connection>
		<url>git@github.com:xxx/xxxx.git</url>
	</scm>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<profiles>
		<profile>
			<id>default-profile</id>
			<activation>
				<activeByDefault>true</activeByDefault>
				<file>
					<exists>${java.home}/../lib/tools.jar</exists>
				</file>
			</activation>
			<properties>
				<toolsjar>${java.home}/../lib/tools.jar</toolsjar>
			</properties>
		</profile>

		<profile>
			<id>mac-profile</id>
			<activation>
				<activeByDefault>false</activeByDefault>
				<file>
					<exists>${java.home}/../Classes/classes.jar</exists>
				</file>
			</activation>
			<properties>
				<toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
			</properties>
		</profile>
	</profiles>

	<distributionManagement>
		<snapshotRepository>
			<id>oss</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>oss</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
		</repository>
	</distributionManagement>

	<dependencies>
		<dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6.1</version>
		</dependency>

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>1.4</version>
			<optional>true</optional>
		</dependency>

		<!-- <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> 
			<version>3.12.1.GA</version> <optional>false</optional> </dependency> -->

		<!-- jsr 305 -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<!--<version>12.0</version> --> <!-- jdk1.6+ -->
			<version>11.0.2</version> <!-- case: when only jdk1.5 is acceptable -->
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
			<scope>provided</scope>
			<optional>true</optional> <!-- case: when no servlet environment -->
		</dependency>

		<dependency>
			<groupId>sun.jdk</groupId>
			<artifactId>tools</artifactId>
			<version>xxx</version>
			<scope>system</scope>
			<systemPath>${toolsjar}</systemPath>
		</dependency>
	</dependencies>

	<build>
		<finalName>${project.artifactId}-${project.version}</finalName>
		<sourceDirectory>src</sourceDirectory>

		<resources>
			<resource>
				<directory>assets</directory>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<archive>
						<manifestFile>
							META-INF/MANIFEST.MF
						</manifestFile>
					</archive>
				</configuration>
			</plugin>

			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<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>
				<version>1.5</version>
				<executions>
					<execution>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

	<!-- <build>
	    <finalName>${project.artifactId}-${project.version}</finalName>
		<sourceDirectory>src-maven</sourceDirectory>
		
		<resources>
			<resource>
				<directory>assets</directory>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.2.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<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>
						<phase>package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-gpg-plugin</artifactId>
				<version>1.5</version>
				<executions>
					<execution>
						<phase>verify</phase>
						<goals>
							<goal>sign</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build> -->

</project>






一步一步教你分享开源项目到 Maven 中心仓库

为了让我们的代码能够被全世界看到,我们应该努力将它推广出去,为了让更多人能够轻松的使用它,我们应该将他发布到Maven Centeral Repository中。...
  • kifile
  • kifile
  • 2015年01月06日 22:12
  • 4181

[Maven实战]发布maven项目到中央仓库(Central Repository)

概述用maven已经一段时间,也搭建了公司内部的maven环境。然而有一些通用的可以开源的代码想放到公网的仓库中,以便可以随时使用(公司网络因为经常切换,导致maven库常有无法导入的情况)...
  • ssrc0604hx
  • ssrc0604hx
  • 2016年05月27日 10:40
  • 5951

将jar发布到maven中央仓库小记

dexcoder-assistant发布也经历几个版本了,很多人反映使用不太方便,需要将源码下来后本地编译安装一下,如果能直接使用就好了。 osc提供了第三方的maven库,但终究没有官方的mave...
  • hj7jay
  • hj7jay
  • 2016年04月12日 09:26
  • 5433

如何发布jar包到maven中央仓库

如何发布jar包到maven中央仓库自使用maven以来,没少使用maven中央仓库中的各种jar包,方便有效,但是咱们也不能总是只取不予,也应该懂得奉献,当你写好了一个十分好用的jar包,想贡献出去...
  • tiger435
  • tiger435
  • 2016年01月06日 17:04
  • 4990

发布Jar包到Maven中央仓库

发布Jar包到Maven中央仓库 the central repository
  • wf632856695
  • wf632856695
  • 2017年05月08日 13:02
  • 3887

Maven--构建企业级仓库(二)

看到经历的两家公司都在用Maven,遂想把关于Maven的写完整。很久很久以前写了《搭建Maven开发环境(一)》,写完客户端,那本篇就来搭建一个Maven私服,用到的工具是Nexus,Nexus是M...
  • hybaym
  • hybaym
  • 2016年03月04日 16:43
  • 762

maven中央仓库大集合

1、maven 仓库地址: 共有的仓库 http://mvnrepository.com/   http://repo1.maven.org/maven2/ http://repository.j...
  • yzj578492228
  • yzj578492228
  • 2015年02月16日 14:52
  • 3770

通过maven中央仓库进行jar包下载

转载自:通过maven中央仓库进行jar包下载 前言:Maven的中央仓库包含各种jar包  有些jar不好下载的都可以在这里进行下。下载方式简单,快捷。   首先使用Maven下载jar必须...
  • SCGH_Fx
  • SCGH_Fx
  • 2017年07月07日 10:43
  • 1218

maven替换中央仓库- 阿里云

在国内访问Maven仓库,连接速度太慢。下面是将中央仓库替换成阿里云的中央仓库的方法。 第一种,统一修改仓库地址 可以直接修改Mavenconf文件夹中的setting.xml文件,或者在.m2文...
  • xiaolyuh123
  • xiaolyuh123
  • 2017年07月02日 10:04
  • 6953

Maven入门系列(二)--设置中央仓库的方法

Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布。 下载的地址是中央仓库mvnrepository.com,当然,全球很多个仓库。 资源的坐标简称GVA...
  • ywb201314
  • ywb201314
  • 2016年04月17日 18:43
  • 5205
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Maven中央仓库构建上传心得
举报原因:
原因补充:

(最多只允许输入30个字)