Publique su propio tarro en el almacén central de Maven con un solo clic

El desarrollo de Java es, por supuesto, inseparable de la administración de paquetes jar . No sé cuándo siempre quiero empaquetar mi propio paquete jar
y luego publicarlo en el almacén central de maven para que otros lo usen.

hhh Siento que escribir una herramienta de paquete jar y que sea utilizada por muchas personas es algo muy bueno y muy feliz.

Finalmente tuve esta oportunidad, y tiempo. SpringBoot staterSegún el iniciador de escena, puede definir fácilmente sus propios componentes de estado e incluso publicarlos en el repositorio de Maven. para que todos lo usen.

Resumí y escribí una biblioteca de herramientas, Stater, como programador he trabajado durante muchos años.

dirección de Github

Basado en él, puede desarrollar fácilmente SpringBoot WEB API y mejorar la eficiencia. Ya no te preocupes por algunas cosas engorrosas. Duplique el trabajo, pero concéntrese en el negocio.

Volviendo al tema, este artículo está basado en el mío, que hable el enunciador . Cómo publicar el stater autodefinido en el almacén central de maven.

Registrar cuenta sonatype

Ingrese a issues.sonatype.org para registrar su propia cuenta, basada en esta plataforma, publique rápidamente en el almacén de maven

Una vez que se complete el registro, recuerde la contraseña de la cuenta y la liberación posterior requiere autorización

Cree su propia orden de trabajo del proyecto maven

Una vez que se completa el registro, nos creamos, publicamos mavenel proyecto y hacemos clic en Nuevo

Selección de proyectos: Soporte comunitario - Alojamiento de repositorio de proyectos de código abierto (OSSRH)

Selección del tipo de pregunta: Nuevo Proyecto

* es un elemento obligatorio, el resto se puede dejar en blanco o mantener el valor predeterminado, y luego crear una nueva orden de trabajo para esperar a que el administrador la revise

Dirección del proyecto Complete una dirección de almacén de Github de su proyecto. Todavía se enfatiza aquí para completar la identificación del grupo. La identificación del grupo debe completarse de acuerdo con su propio nombre de dominio o dirección de almacén de código abierto.

Más adelante en la pregunta: mi informe puede rastrear el estado de auditoría del problema

Esperando la revisión del administrador. Una vez completada la auditoría, el administrador le pedirá que verifique que el nombre de dominio es suyo o que demuestre que el espacio de gitee o github es suyo

cerrar proyecto de orden de trabajo maven

Después de que se apruebe el proyecto de orden de trabajo de maven, habrá un recordatorio por correo electrónico.

Después de crear un problema exitoso, debe esperar a que el personal de Sonatype lo revise. El tiempo de revisión es de unos minutos (yo estuve 5 minutos, parecía que alguien tardó algunas horas...), después de que se pasa la revisión , el Estado del problema cambiará a Resuelto y podrá continuar con el siguiente paso Operado

Hace clic en la pregunta: encuentre su propio proyecto recién creado

Luego haga clic en el botón Responder para abrir el ticket y permitir que el administrador lo verifique.

Espere a que se complete la verificación y el administrador le responderá que la verificación fue exitosa, lo que significa que su orden de trabajo ha pasado y puede cargar el proyecto

Si usa un nombre de dominio, el administrador le pedirá que agregue una resolución TXT a su nombre de dominio y luego lo verificará:

No hay problema, puedes cerrar la pregunta en este momento.

configuración del proyecto

configuración experta

Configure la contraseña de su cuenta de issues.sonatype.org registrada en su archivo de configuración de maven

settings.xmlLa configuración del nodo de servidores del archivo en la carpeta maven conf es la siguiente

 <server>
      <id>snapshots</id>
      <username>kenx</username>
      <password>xxxx</password>
    </server>
    <server>
      <id>releases</id>
      <username>kenx</username>
      <password>xxxx</password>
    </server>
    <server>
      <id>ossrh</id>
      <username>kenx</username>
      <password>xxx</password>
    </server>

Configuración clave

Usa gpg para generar una clave secreta

Cargar proyectos requiere autenticación de firma de clave secreta. Se debe generar una contraseña localmente. Y cargue la clave pública al servicio.

generar clave

gpg --gen-key

Después de ejecutarse, gpg requiere que seleccione el algoritmo de cifrado, el tiempo de caducidad, etc., y puede seleccionar directamente los valores predeterminados. A través de la comparación, se encuentra que ejecutar el comando gpg --gen-key en versiones anteriores a gpg 2.0 omitirá estos pasos.

Luego, gpg requiere que ingrese su nombre, dirección de correo electrónico y la frase de contraseña clave (esta contraseña debe ser recordada por usted mismo, le será útil más adelante), y puede ingresarla en secuencia. Entonces gpg genera un par de claves para ti.

ver clave

gpg --list-keys

Hay un número hexadecimal debajo del campo pub, ese es el ID de esta clave

Luego necesitamos subir esta clave secreta al servidor de claves públicas, usando el siguiente comando:

gpg --keyserver keyserver.ubuntu.com --send-keys 秘钥ID

Verifique que la carga se haya realizado correctamente en el servidor:

gpg --keyserver keyserver.ubuntu.com --recv-keys 秘钥ID

Si los resultados de salida de los dos comandos son los siguientes, significa éxito:

De esta forma, se completa la configuración de la clave secreta.

Modificar la configuración del pom del proyecto.

A continuación, debemos configurar el archivo pom en nuestro proyecto,

<groupId>cn.soboys</groupId>
    <artifactId>rest-api-spring-boot-starter</artifactId>
    <version>1.3.0</version>
    <packaging>jar</packaging>
    <name>rest-api-spring-boot-starter</name>
    <description>SpringBoot Easy Fast Rest WEB 提高SpringBoot Web开发工作效率 RestFull API使用 全局错误拦截,参数校验, 错误国际化 ,自定义错误响应 ,业务异常断言 ,Redis 工具库使用 ,RestTemplate 请求工具 ,日志使用 ,集成mybatisPlus一键代码生成</description>
    <url>https://github.com/coder-amiao/rest-api-spring-boot-starter</url>

    <!-- 项目设定 -->
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <gpg.passphrase>1234qwer</gpg.passphrase>
        <gpg.keyname>E933FBC878FB2EC0900A2ABAF79C3CD9E9E6A8EF</gpg.keyname>
        <gpg.homedir>/Users/xiangyong/.gnupg</gpg.homedir>
    </properties>



    <!-- 许可证信息,这里是Apache 2.0的许可证,大家根据实际情况修改 -->
    <licenses>
        <license>
            <name>The Apache Software License, Version2.0</name>
            <url>https://www.apache.org/licenses/</url>
            <distribution>repo</distribution>
        </license>
    </licenses>


    <!--   开发人员信息         -->
    <developers>
        <developer>
            <name>三时</name>
            <email>[email protected]</email>
        </developer>
    </developers>

    <!--   项目仓库信息         -->
    <scm>
        <connection>scm:git:https://github.com/zw201913/jtile38.git</connection>
        <developerConnection>https://github.com/coder-amiao/rest-api-spring-boot-starter</developerConnection>
        <url>https://github.com/coder-amiao/rest-api-spring-boot-starter.git</url>
        <tag>v${project.version}</tag>
    </scm>

    <!-- 中央仓库地址配置,不需要修改 -->
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>

        <repository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 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.10.4</version>
                <configuration>
                    <additionalJOptions>
                        <additionalJOption>-Xdoclint:none</additionalJOption>
                    </additionalJOptions>
                </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>
                <configuration>
                    <gpgArguments>
                        <arg>--pinentry-mode</arg>
                        <arg>loopback</arg>
                    </gpgArguments>
                </configuration>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Tenga en cuenta que el ID de grupo configurado debe ser coherente con la orden de trabajo del proyecto maven que creó anteriormente

El pom.xml debe incluir información básica como nombre, descripción, url, licencias, desarrolladores, scm, etc., usando la función de perfil de Maven, solo cuando se libera, crea paquetes de código fuente, paquetes de documentos y usa GPG para firmas digitales.

Además, la identificación en snapshotRepository y el repositorio deben ser coherentes con la identificación del servidor en setting.xml.

Si se trata de un proyecto de varios módulos, solo necesita declararlos en el pom.xml principal, y solo necesita modificar parte de la información correspondiente en el pom.xml secundario, como la etiqueta de nombre.

lanzamiento del proyecto

A continuación, puede publicar el proyecto utilizando implementar

o mando

mvn clean deploy

Publicar el proyecto en el repositorio central

Los pasos anteriores son solo para transferir el proyecto a Sonatype, y aún no se ha lanzado.

Ingrese a s01.oss.sonatype.org, inicie sesión, la cuenta es el nombre de usuario y la contraseña de la cuenta registrada anteriormente

Haga clic en Repositorios provisionales junto a él para ver nuestros proyectos publicados.

Marque el artículo y haga clic en el botón Cerrar para iniciar la verificación del artículo.

Luego haga clic en la etiqueta activa a continuación para ver el progreso del cierre:

Si se aprobaron todas las reglas: Requisito de sincronización central, significa que la verificación pasó y se puede liberar.

Si el botón de proceso está gris o no se puede hacer clic, simplemente repita la actualización y espere (puede deberse a otras razones, como la red). Luego repita los pasos anteriores. poder

Luego haga clic en el botón de liberación de arriba para publicar en el almacén central.

Una vez finalizado, aproximadamente 2 horas más tarde, ¡puede encontrar su proyecto publicado en search.maven.org !

Resumen

Después de publicar el proyecto, si el ID de grupo permanece sin cambios, no necesitamos solicitar una orden de trabajo.

Simplemente repita algunos de los pasos clave en los pasos 2, 3 y 4 anteriores.

El archivo settings.xml anterior tiene servidores configurados ,

No es necesario volver a configurarlo, es decir, se puede omitir el segundo paso de configurar settings.xml. La clave secreta ya ha sido generada y no hay necesidad de generarla nuevamente, es decir, el tercer paso de generación de clave secreta tampoco es necesario. Sin embargo, si cambia la computadora, debe reconfigurar settings.xml y regenerar y cargar la clave secreta.

Preste atención a la cuenta oficial, el programador continuará generando contenido de alta calidad a las tres en punto , con la esperanza de brindarle algo de inspiración y ayuda.

Supongo que te gusta

Origin blog.csdn.net/u011738045/article/details/131620029
Recomendado
Clasificación