A solução para a falha de uso do Gradle para abrir o pacote de dependência

No passado, ao usar o Maven para desenvolver projetos da Web em java, geralmente usávamos vários módulos para desenvolvimento, mas usar o Maven simplifica muito o desenvolvimento de vários módulos.

Agora o Maven é muito estável, mas recentemente, por causa de seu contato com o Gradle, é atraído por sua configuração simples e flexibilidade! Usar o Gradle em vez do Maven é uma escolha muito boa.

O Gradle só precisa importar plugins para usar os comandos do Maven!

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

Como mostrado acima, você pode usar o gradlew install em vez do comando mvn install introduzindo o plug-in maven

 

Quando estou desenvolvendo, preciso desenvolver uma dependência springboot-start, então preciso iniciar um projeto separado para escrever a dependência

Mas quando o gradlew foi instalado, ele relatou um erro:

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

Ele avisa que o pacote jar empacotado não pode ser encontrado e, em seguida, vá para o diretório de compilação para encontrá-lo. Com certeza, não há nenhum pacote jar empacotado

 

Em seguida, use gradlew install -d para visualizar a saída detalhada do comando de instalação e localize:

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

Verificou-se que a tarefa de jar foi ignorada.

Depois de verificar, encontrei um plugin adicionado às minhas dependências gradle

org.springframework.boot

Depois de remover este plug-in, ele pode ser empacotado com sucesso, mas este plug-in é usado pela minha versão padrão do springboot. Se eu não usar este plug-in, preciso adicionar o número da versão a cada dependência do springboot usado

Após testes verificou-se que:

O plug-in:

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

 

Então o problema da embalagem está resolvido, como resolver o problema da versão? Se gradle introduzir a dependência pom de spring-boot-starter-parent como maven

usar:

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

é isso

 

Se a dependência não for um projeto separado, mas um módulo separado, então, neste momento, você precisa excluir esta dependência neste módulo separado

Encontre o arquivo build.gradle correspondente ao módulo pai

Rever

allprojects {      

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

}

É isso.

Ao usar maven, muitas vezes você vê a palavra-chave opcional, que indica dependências opcionais:

Cenário de aplicação:

应用场景: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, 及子项目必须依赖
Mas não existe essa palavra-chave no gradle, você pode usar compileOnly em vez de implementação para introduzir dependências para obter o efeito da palavra-chave opcional maven

Acho que você gosta

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