web-dev-qa-db-fra.com

Qu'est-ce que le logiciel Spring-Boot-Configuration-Processor? Pourquoi les gens en excluent-ils les bibliothèques? Pourquoi est-il invisible dans l'arbre de dépendance?

Introduction

J'ai donc remarqué la ligne suivante dans le fichier gradle du projet jhipster:

annotationProcessor ("org.springframework.boot:spring-boot-configuration-processor") {
        exclude group: 'com.vaadin.external.google', module: 'Android-json'
    }

https://github.com/jhipster/jhipster-sample-app-gradle/blob/9e9c3db8f3bedba4b1efd85ecb6ff3f12a5f596a/build.gradle#L2

Nous avons également utilisé la même configuration dans Maven pour un autre projet afin de résoudre le problème suivant: la dépendance transitoire Maven (bibliothèque/jar vaadin json) n’est pas exclue

Des questions

Et maintenant j'ai les questions suivantes:

  • Que fait la dépendance spring-boot-configuration-processeur?
  • Pourquoi est-il nécessaire d'exclure parfois les dépendances du processeur?
  • Pourquoi le processeur n'apparaît-il pas nécessairement dans l'arborescence mvn-dependency?
  • Pourquoi les exclusions sont-elles utilisées avec un processeur dans des situations où il est très difficile d'exclure une dépendance?
11
Menelaos Bakopoulos

spring-boot-configuration-processor est un processeur d'annotation qui génère des métadonnées sur les classes de votre application annotées avec @ConfigurationProperties. Ces métadonnées sont utilisées par IDE (Eclipse, IntelliJ ou NetBeans) pour fournir la saisie semi-automatique et la documentation des propriétés lors de la modification de application.properties et application.yaml des dossiers. Vous pouvez en apprendre un peu plus à ce sujet dans la documentation de référence de section pertinente de Spring Boot.

Depuis Spring Boot 1.5.10, l'exclusion n'est plus nécessaire car com.vaadin.external.google:Android-json n'est plus une dépendance de spring-boot-configuration-processor.

16
Andy Wilkinson

Que fait la dépendance spring-boot-configuration-processeur?

Il analyse les bibliothèques de la construction et voit quelles propriétés elles utilisent pour informer l'EDI

Pourquoi est-il nécessaire d'exclure parfois les dépendances du processeur?

Les bibliothèques Maven peuvent parfois entrer en conflit - celle que vous avez référencée a été exclue par JHipster car elle entraînait des erreurs lorsque vous êtes sur le chemin de classe avec une autre bibliothèque dans les dépendances de JHipster

Pourquoi le processeur n'apparaît-il pas nécessairement dans la dépendance mvn: tree?

Cela fait pour moi sur le jhipster-sample-app. Vous faites probablement allusion au commentaire sur le problème lié indiquant que le Android-json La bibliothèque n'est pas dans l'arborescence. J'ai demandé à ce sujet.

Pourquoi les exclusions sont-elles utilisées avec le processeur dans des situations où il est très difficile d'exclure une dépendance?

C’est un problème conflit de dépendances comme tout autre, vraiment, il arrive que le processeur introduise la dépendance clé (ou plutôt l’était, comme @ Andy Wilkinson indique com.vaadin.external.google:Android-json n'est plus utilisé par le processeur)

5
Ryan Dawson