La solución al fallo de usar Gradle para abrir el paquete de dependencia

En el pasado, cuando usamos Maven para desarrollar proyectos web Java, generalmente usamos módulos múltiples para el desarrollo, pero el uso de Maven simplifica enormemente el desarrollo de módulos múltiples.

Ahora Maven es muy estable, pero recientemente, debido a su contacto con Gradle, ¡se siente atraído por su configuración simple y flexibilidad! Usar Gradle en lugar de Maven es una muy buena opción.

¡Gradle solo necesita importar complementos para usar los comandos de Maven!

plugins {
    id 'java'
    id 'maven'
    id 'maven-publish'
}

Como se muestra arriba, puede usar gradlew install en lugar del comando mvn install introduciendo el complemento maven

 

Cuando estoy desarrollando, necesito desarrollar una dependencia springboot-start, por lo que necesito iniciar un proyecto separado para escribir la dependencia.

Pero cuando se instaló gradlew, informó un error:

* What went wrong:
Execution failed for task ':install'.
> Could not publish configuration 'archives'
   > Cannot publish artifact 'dynamic-datasource-spring-boot-starter.jar' (E:\dynamic-datasource-spring-boot-starter\build\libs\dynamic-datasource-spring-boot-starter-1.0-SNA
PSHOT.jar) as it does not exist.

Indica que no se puede encontrar el paquete jar empaquetado, y luego vaya al directorio de compilación para encontrarlo. Efectivamente, no hay ningún paquete jar empaquetado

 

Luego use gradlew install -d para ver el resultado detallado del comando de instalación y busque:

09:18:57.865 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] > Task :jar SKIPPED

Se encontró que se omitió la tarea de jar.

Después de verificar, encontré un complemento agregado a mis dependencias de gradle

org.springframework.boot

Después de eliminar este complemento, se puede empaquetar correctamente, pero mi versión estándar de springboot usa este complemento. Si no uso este complemento, necesito agregar el número de versión a cada dependencia de springboot usado

Después de la prueba se encontró que:

El complemento:

除了可以规定使用的springboot的版本外,同时还增加了名为bootRun和bootJar的gradle任务,当项目作为一个其他项目的依赖时,不应引入该插件,否则会提示打包失败,找不到MainClass,当项目是作为一个完整的项目时,引入此依赖,那么即规定了springboot的版本,同时也可以使用 gradlew bootRun命令来运行此项目

 

Entonces, el problema del empaque está resuelto, ¿cómo resolver el problema de la versión? Si gradle introduce la dependencia pom de spring-boot-starter-parent como maven

usar:

implementation platform("org.springframework.boot:spring-boot-starter-parent:2.1.8.RELEASE")

eso es todo

 

Si la dependencia no es un proyecto separado, sino un módulo separado, entonces, en este momento, debe excluir esta dependencia en este módulo separado.

Encuentre el archivo build.gradle correspondiente al módulo principal

Revisar

allprojects {      

    //    这些模块不应用 springboot插件
    if (!name.startsWith("common") && !name.startsWith("domain")) {
        apply plugin: 'org.springframework.boot'
        apply plugin: 'io.spring.dependency-management'
    }

}

Eso es todo.

Cuando usa maven, a menudo ve la palabra clave opcional, que indica dependencias opcionales:

Escenario de aplicación:

应用场景:projectA 依赖projectB,  projectB 依赖projectC时

<dependency>
  <groupId>com.itear.projectC</groupId>
  <artifactId>projectC</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <optional>true</optional>
</dependency>
当projectB的<optional>true</optional>时, projectA中如果没有显式的引入projectC, 则projectA不依赖projectC, 即projectA可以自己选择是否依赖projectC

默认<optional>的值为false, 及子项目必须依赖
Pero no existe tal palabra clave en gradle, puede usar compileOnly en lugar de implementación para introducir dependencias para lograr el efecto de la palabra clave opcional maven

Supongo que te gusta

Origin blog.csdn.net/kanyun123/article/details/102541381
Recomendado
Clasificación