¿Cómo publicar mi proyecto en el almacén central de Maven?

En el proyecto Maven, más del 90% de los paquetes jar se obtienen directamente del almacén de código abierto a través del archivo pom y los archivos del paquete jar dependientes se integran y utilizan en el proyecto.

En este punto, si tiene un proyecto de código abierto, ¿cómo publica el proyecto de código abierto en el almacén central de Maven para que otros puedan usarlo convenientemente, en lugar de descargar primero el jar y luego instalarlo localmente?

Este artículo lo llevará a publicar su proyecto de código abierto en el repositorio central de Maven a través de una operación paso a paso, https://mvnrepository.com/.

El almacén central de Maven no admite la liberación directa de paquetes jar. Es necesario publicar los paquetes jar en algunos almacenes Maven designados de terceros, y luego el almacén sincronizará los paquetes jar con el almacén central de Maven. Sonatype es uno de esos roles.

La configuración del sistema en este artículo es la siguiente: 1. Sistema operativo macOS 10.14.2; 2. JDK1.8.0_192; 3. Maven: 3.5.4.

Listo para trabajar

Registre una cuenta de GitHub, dirección: https://github.com. Dado que es un proyecto de código abierto, debe haber un lugar para el alojamiento, y aquí se usa GitHub.

Luego cree el proyecto y cargue el código de proyecto correspondiente.

Muchos amigos ya tienen cuentas de GitHub y proyectos de código abierto. Esta es una plataforma casi imprescindible para los programadores. Si no tienes una, abre una.

Registre una cuenta Sonatype

Sonatype gestiona el almacén OSSRH a través de JIRA. JIRA es un servicio de gestión de proyectos, similar al Teambition doméstico.

Dirección registrada: https://issues.sonatype.org/secure/Signup!default.jspa

Sonatype

Entre ellos, el nombre de usuario es el nombre de inicio de sesión, la contraseña es la contraseña de inicio de sesión, son un conjunto.

[Consejos útiles] La verificación de la contraseña es muy exigente, es mejor usar un bloc de notas para grabar notas.

Una vez completado el registro, el primer inicio de sesión le permitirá elegir el idioma, aquí he elegido chino.

Solicitud de lanzamiento de proyecto

Cuando inicie sesión en Sonatype por primera vez, irá directamente a la página de creación. Después de iniciar sesión para crear una aplicación de proyecto, debe hacer clic en "Nuevo" en la barra de navegación para crear y publicar un proyecto o problema.

Sonatype

Al crear un problema en JIRA para solicitar el lanzamiento de un nuevo paquete jar, el personal de Sonatype lo revisará y, por lo general, no habrá problemas para completar según sea necesario.

Sonatype

Complete la información cuando solicite la versión china de la imagen de arriba. El proyecto debe seleccionar el elemento "Soporte de la comunidad" y el tipo de pregunta correspondiente debe ser "Nuevo proyecto". De acuerdo con la selección anterior, la información correspondiente del GroupId y del proyecto se mostrará a continuación.

La URL del proyecto es la dirección URL del proyecto, que es la URL del navegador cuando accede al proyecto GitHub, por ejemplo: https://github.com/secbr/fastdfs-client-plus

La URL de SCM es un enlace para acceder al código fuente basado en Https. Sabemos que hay muchas formas de obtener el código fuente de GitHub. Puede descargar el paquete zip y descargarlo a través de "Usar ssh", "Usar Https", etc. La URL de SCM aquí es la dirección URL de Https, como por ejemplo: https: // github. com / secbr / fastdfs-client-plus.git

Se puede completar otra información no requerida según sea necesario.

Una vez completado el envío, se creará un problema y el contenido se mostrará de la siguiente manera:
Sonatype

Evidentemente, actualmente se encuentra en estado "pendiente", esperando revisión. Más de diez minutos después de escribir este artículo, el revisor oficial respondió "Esperando respuesta". Al mismo tiempo, la información de comentario correspondiente aparecerá en Problemas.
Inserte la descripción de la imagen aquí

Esto es principalmente para verificar el GroupId anterior para determinar si el nombre de dominio correspondiente es de su propiedad. Por ejemplo, el GroupId que se completa aquí es top.folen. Entonces, el nombre de dominio que debe verificarse es folen.top.

En los comentarios se proporcionan dos métodos de verificación, uno es configurar DNS según sea necesario y el otro es usar directamente el nombre de dominio de segundo nivel de GitHub.

Aquí finalmente elegí usar el nombre de dominio de segundo nivel de GitHub como GroupID. En este momento, la respuesta oficial es la siguiente:

Sonatype

Para verificar si la plataforma tiene permisos de cuenta en GitHub, el solicitante debe crear un proyecto llamado "OSSRH-59503" en GitHub. Crea un proyecto tan vacío en GitHub y luego responde en el área de comentarios.

Sonatype

Una vez completada la respuesta, espere un momento y la revisión estará completa.
Inserte la descripción de la imagen aquí

Todo el proceso anterior tomó alrededor de 40 minutos, y la respuesta oficial fue relativamente oportuna, dado que la operación se llevó a cabo a las cuatro o cinco de la tarde, no estoy seguro si encontrará jet lag durante la operación. Puede verificar el estado de respuesta de los problemas enviados por otros recientemente en el panel principal para confirmar si debe esperar.

Instalar y configurar GPG

Todos los archivos publicados en el repositorio de Maven deben estar firmados con GPG para garantizar su integridad. Por lo tanto, necesitamos instalar y configurar GPG localmente.

Utilizo el sistema operativo Mac y todo el mundo busca la instalación de otros sistemas operativos.

Instalar GPG en MacBook es muy simple, solo descargue e instale GPG Suite: https://gpgtools.org/

Una vez completada la instalación, puede ingresar a la interfaz de operación para crear un par de claves GPG, y la siguiente página aparecerá cuando se complete la instalación en Mac:
Inserte la descripción de la imagen aquí

Al generar la clave, deberá ingresar el nombre, correo electrónico y contraseña. La contraseña de la clave secreta se utilizará en los siguientes pasos, anótela.

Una vez creada la clave pública, aparecerá automáticamente y la cargará en el servidor de claves públicas, de modo que otras personas puedan verificar la integridad del paquete jar a través de la clave pública.

Sonatype

Si olvida la información de la clave pública, puede ejecutar el comando gpg --list-keys para ver la información de la clave pública local.

192:~ zzs$ gpg --list-keys
/Users/zzs/.gnupg/pubring.kbx
-----------------------------
pub   dsa2048 2010-08-19 [SC] [过期于:2020-06-15]
      85E38F69046B44C1EC9FB07B76D78F0500D026C4
uid           [ 已过期 ] GPGTools Team <[email protected]>

pub   rsa4096 2020-05-04 [SC] [有效至:2024-05-03]
      B97E9964ACAD1907970D37CC8A9E3745558E41AF
uid           [ 未知 ] GPGTools Support <[email protected]>
sub   rsa4096 2020-05-04 [E] [有效至:2024-05-03]

pub   rsa4096 2020-07-27 [SC] [有效至:2024-07-27]
      74C31F28121A99A6E28C234148FEC679B82EF754
uid           [ 绝对 ] secbro <[email protected]>
sub   rsa4096 2020-07-27 [E] [有效至:2024-07-27]

También puede cargar la información de la clave pública en el servidor en el siguiente formulario:

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys B97E9964ACAD1907970D37CC8A9E3745558E41AF

Entre ellos, B97E9964ACAD1907970D37CC8A9E3745558E41AF es el que se encuentra arriba.

Si se trata de un sistema operativo Windows, después de instalar el software, abra la línea de comando cmd, ejecute gpg --gen-key para generar la clave, ejecute gpg --list-keys para ver la lista de claves, y ejecute el comando anterior para cargar la clave.

Configurar setting.xml de Maven

Setting.xml es el archivo de configuración global de Maven, la ruta es $ MAVEN_HOME / conf / settings.xml, el nombre de usuario y la contraseña configurados al registrar la cuenta de Sonatype deben agregarse a la etiqueta de los servidores, para que el paquete jar se pueda implementar en el almacén de Sonatype OSSRH:

<server>
  <id>sonatype-nexus-snapshots</id>
  <username>Sonatype账号</username>
  <password>Sonatype密码</password>
</server>

Configurar el pom.xml del proyecto

De acuerdo con los requisitos de Sonatype OSSRH, se debe configurar la siguiente información:

  • Suministro de Javadoc y fuentes
  • Firmar archivos con GPG / PGP
  • Metadatos suficientes
  • Coordenadas correctas
  • Nombre del proyecto, descripción y URL
  • Información de licencia
  • Información del desarrollador
  • Información de SCM

Agregue el acuerdo de licencia de código abierto, la información de SCM, la información del desarrollador y espere a completar de acuerdo con su propia información.

<licenses>
    <license>
      <name>BSD 3-Clause</name>
      <url>https://spdx.org/licenses/BSD-3-Clause.html</url>
    </license>
  </licenses>
  <scm>
    <connection>https://github.com/secbr/fastdfs-client-plus.git</connection>
    <url>https://github.com/secbr/fastdfs-client-plus</url>
  </scm>
  <developers>
    <developer>
      <name>secbr</name>
      <email>[email protected]</email>
      <roles>
        <role>Developer</role>
      </roles>
      <timezone>+8</timezone>
    </developer>
  </developers>

Si publica la versión Release, debe agregar la configuración de perfil relevante de Release y modificar la información de configuración en la sección DistributionManagement y en la sección Maven-compiler-plugin de acuerdo con su situación real.

<profiles>
    <profile>
      <id>release</id>
      <build>
        <resources>
          <resource>
            <directory>src/main/java</directory>
            <includes>
              <include>**/*.properties</include>
              <include>**/*.sample</include>
            </includes>
          </resource>
        </resources>
        <plugins>
          <!-- Source -->
          <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>
          <!-- Javadoc -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
              <show>private</show>
              <nohelp>true</nohelp>
              <charset>UTF-8</charset>
              <encoding>UTF-8</encoding>
              <docencoding>UTF-8</docencoding>
              <additionalparam>-Xdoclint:none</additionalparam>
              <javadocExecutable>/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/javadoc</javadocExecutable>
              <!-- TODO 临时解决不规范的javadoc生成报错,后面要规范化后把这行去掉 -->
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!-- GPG -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <!--Compiler -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.0</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <fork>true</fork>
              <verbose>true</verbose>
              <encoding>UTF-8</encoding>
              <showWarnings>false</showWarnings>
            </configuration>
          </plugin>
          <!--Release -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.1</version>
          </plugin>
        </plugins>
      </build>
      <distributionManagement>
        <snapshotRepository>
          <id>sonatype-nexus-snapshots</id>
          <name>Sonatype Nexus Snapshots</name>
          <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
          <id>sonatype-nexus-snapshots</id>
          <name>Nexus Release Repository</name>
          <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
      </distributionManagement>
    </profile>
  </profiles>

SnapshotRepository es el ID del servidor definido en setting.xml.

Publicar paquete Jar

Después de completar la configuración anterior, puede empaquetar y cargar a través de comandos, y luego el paquete jar se puede publicar en el almacén Sonatype OSSRH.

mvn clean deploy -P release

Ejecute el comando anterior, empaque y cargue. release es la identificación del elemento de perfil configurado anteriormente.

En el proceso de ejecución, debe ingresar la contraseña clave establecida anteriormente. La pantalla de la consola de ejecución exitosa se muestra en la figura.

Inserte la descripción de la imagen aquí

[Consejos útiles] Si se produce un error 401 durante el proceso de empaquetado, puede deberse a que el nombre de usuario y la contraseña configurados en el nodo del servidor en el archivo de configuración de Maven son incorrectos o que el problema no se ha aprobado.

Visite cualquiera de los enlaces anteriores en este momento para consultar la información correspondiente. Por ejemplo, elimine los archivos específicos en la URL y deje solo la siguiente ruta: https://oss.sonatype.org/content/repositories/snapshots/com/github/secbr/fastdfs-client-plus/1.0.0-SNAPSHOT/

Acceda a la ruta anterior, puede ver toda la información del archivo cargado.

Ver paquete de tarro de lanzamiento

En este punto, vaya a https://oss.sonatype.org/#stagingRepositories para ver los componentes lanzados, haga clic en Repositorios de prueba a la izquierda, puede usar el Id. De grupo u otra información para buscar sus propios proyectos.

Si aparece el nombre de usuario o la contraseña, ingrese la información de usuario y contraseña correspondientes al registrar el tipo de sonido.

En este punto, debe tenerse en cuenta que si la información de la versión en el proyecto es 1.0.0-SNAPSHOT, es decir, SNAPSHOT es el sufijo, el proyecto publicado se encuentra en el directorio Snapshots. Se puede encontrar en Búsqueda de artefactos en la esquina superior izquierda.

Si se trata de un sufijo de versión, puede verlo directamente en los repositorios de ensayo (es posible que deba esperar un poco mientras espera que la plataforma lo procese).

Inserte la descripción de la imagen aquí

Después de seleccionar el repositorio, haga clic en cerrar.Cuando cierre, comprobará si los componentes publicados cumplen con los requisitos. Si cumple con los requisitos, el cierre es exitoso. Después del éxito, haga clic en el lanzamiento señalado por la flecha para liberar oficialmente el paquete jar al almacén de Sonatype OSSRH.

Sonatype

Cuando haga clic en Liberar, recibirá un mensaje sobre los cambios de problemas en el correo electrónico, que indica que la sincronización se ha activado y que la sincronización se puede actualizar en 10 minutos.

Sonatype

Aproximadamente 2 horas después de que el lanzamiento sea exitoso, el componente se sincronizará con el almacén central de Maven y habrá una notificación por correo electrónico.

En la práctica, se descubrió que se sincronizó con éxito con el almacén central en https://repo1.maven.org/ en diez minutos.
Sonatype

Gradualmente, se sincronizarán otros repositorios de Maven, incluidos los espejos de Ali.

finalizando

Cuando se complete el lanzamiento al almacén central de Maven y se pueda ver el paquete Jar correspondiente, puede agregar un comentario al problema que envió, dejar un mensaje para agradecerle e indicar que el lanzamiento se ha completado, cierre el problema. Hay un principio y un final.

Como programador, ¿es emocionante tener finalmente un conjunto de código propio en el almacén central de Maven?

Enlace original: " ¿Cómo publicar mi proyecto en Maven Central Warehouse?


Nueva visión del procedimiento

La cuenta pública " Nueva Visión del Programa ", una plataforma que le permite mejorar simultáneamente su poder blando y su tecnología dura.

Cuenta oficial de WeChat: nueva visión del programa

Supongo que te gusta

Origin blog.csdn.net/wo541075754/article/details/107633976
Recomendado
Clasificación