Skip to content
hhfrancois edited this page Dec 8, 2015 · 11 revisions

#Comment publier sur central.sonatype.org !!!
Je rajoute cette page, pas que la procédure soit dur, mais bon pas des plus imple non plus.

Sources

ossrh-guide
apache-maven

Prérequis

Maven Java git

Pour git setter les info du user et supprimer le sslVerify

git config --global http.sslVerify false
git config --global user.email "your@email.com"
git config --global user.name "pseudo"

##Créer un ticket sur Sonatype
Sonatype uses JIRA to manage requests.

Dans le ticket :

  • préciser le groupId du projet pour moi ####org.ocelotds Ce groupid correspond au nom de domaine que je possede
  • renseigner l'url du SCM pour moi : ocelot
  • renseigner l'url du site du projet, je mets le wiki.
  • renseigner le username qui va publier les artifacts (le compte JIRA créé précédemment)

Après cela l'admin va surement vous poser quelques questions pour compléter, par exemple donner la visibilité du whois de votre nom de domaine. les ".fr" sont par défaut en anonyme.

Enfin un post vous confirmera que la publication a été activée.

Installer gnugp

Pour pouvoir etre publier sur le repo les artifacts doivent être signé. Pour ce faire on doit installer gnupg

Installer gnupg

gnupg

Generer les clés

gpg --gen-key
Bien noter la passphrase

Publier la public key chez sonatype

gpg --list-keys
gpg --keyserver hkp://pgp.mit.edu --send-keys IDENTIFIANTKEYPUB

OK, a ce stade le plus dur est fait....
Il faut maintenant paramétrer le pom du projet que vous voulez publier.

description et site

	<description>Framework  for communication way between java and javascript</description>	
	<url>https://github.com/ocelotds/ocelot</url>

les développeurs

	<developers>
		<developer>
			<name>François Achache</name>
		</developer>
	</developers>

la licence

	<licenses>
		<license>
			<name>Mozilla Public License 2.0</name>
			<url>http://mozilla.org/MPL/2.0/</url>
		</license>
	</licenses>

propriété du scm

	<properties>
		<project.scm.id>ocelotds</project.scm.id>
	</properties>

les urls scm

	<scm>
		<connection>scm:git:https://github.com/ocelotds/ocelot.git</connection>
		<developerConnection>scm:git:https://github.com/ocelotds/ocelot.git</developerConnection>
		<url>git@github.com:ocelotds/ocelot.git</url>
	</scm>	

les depots cibles

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

Les plugins nécessaires

plugin javadoc

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<version>2.10.3</version>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>			
			</plugin>

plugin sources

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>2.4</version>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>		

plugin gpg pour signer les artifacts plugin gnupg

			<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 sonatype pour publish

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

Il faut maintenant paramétrer maven via le settings.xml
Ce fichiers en fonction de l'os peut être à plusieurs endroits différents, le plus simple étant de modifier celui dans le répertoire d'installation de maven (repertoire conf)

information d'authentification du server sonatype

  <servers>
    <server>
      <id>ossrh</id>
      <username>user_jira</username>
      <password>motdepasse_jira</password>
    </server>
    <server>
      <id>hhdevelopment</id>
      <username>user_scm</username>
      <password>motdepasse_scm</password>
    </server>
</servers>
Notez l'id qui correspond à celui spécifié dans la partie distributionManagment du pom.xml

information pour le plugin gnupg et activation du profile ossrh

plugin gnupg

  <profiles>
    <profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.executable>/chemin/dinstallation/gnupg/gpg2</gpg.executable>
        <gpg.passphrase>lafameusepassephrase</gpg.passphrase>
      </properties>
    </profile>  
  </profiles>

Voilà normalement tout est fait à ce stade plus qu'a tester.

publish snapshot

Aller dans le répertoire du projet que l'on veut publier. puis

/pathmaven/mvn -DskipTests=true deploy

publish release

puis :

/pathmaven/mvn release:clean release:prepare

Valider les réponses sur les version puis :

/pathmaven/mvn release:perform