Peut-on ajouter une dépendance Maven seulement après un autre a été chargé?

AnonymousAlias:

Je l'importation d'un pot par Maven Dependency, le pot exécute une boucle infinie. Je veux résoudre d'autres dépendances entièrement d'abord avant de charger le pot.

Je veux charger

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Attendez que je reçois dans mes journaux

Exposing 2 endpoint(s) beneath base path '/actuator'
Tomcat started on port(s): 1339 (http) with context path ''

Chargez ensuite ma dépendance de pot.

Ce qui se passe est il a commencé à les charger dépendances puis se coince dans une boucle infinie dans le pot et ne termine pas.

Merci

Mark Bramnik:

Le pot ne fonctionne pas une boucle infinie, le pot est un tas de sources binaires (et peut-être des ressources, comme jsons, fichiers, xmls, etc.) à l'intérieur des propriétés de l'artefact.

Ainsi, le travail de maven comme outil de construction est de préparer l'artefact. Une fois que l'artefact est construit le maven est fait, vous ne pouvez pas influencer les choses plus / alter.

Maintenant, puisque vous avez un cadre d'exécution comme le printemps - il peut fonctionner des haricots à l'intérieur des bocaux dans des conditions:

  • Charger le haricot d'une manière paresseuse (uniquement lorsque la méthode de la fève sera appelée première)
  • Exécuter des méthodes de haricots ( de façon asynchrone à l'aide de l' @Asyncannotation)
  • Chargez les haricots seulement quand est spécifié un certain profil (ou une autre condition comme la propriété).

Tous ceux-ci sont les façons de personnaliser le comportement de l'application dans le temps d'exécution avec l'aide du printemps, mais encore une fois, a techniquement maven rien à faire ici.

Ainsi, afin de

éviter boucle infinie à l'intérieur du pot

Vous pouvez savoir quel haricot provoque exactement la boucle infinie (encore une fois, ce ne est pas un « pot » en général, ses quelque haricot spécifique)

Utilisez @Asyncannotation ou définir votre propre pool de threads et exécuter la méthode du grain qui provoque la boucle là ( @Asyncest plus moyen de printemps-ish de le faire)

Dans tous les cas, si chargement du grain par ressort, il a un filetage pour peupler le contexte d'application (qui consiste à charger tous les haricots et utilisation mécanisme d'injection de charge). Donc, si ce thread est bloqué parce que certains haricot provoque boucle infinie lors de son initialisation (constructeur ou méthode post-construction) - l'ensemble de l'application sera bloquée.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=279573&siteId=1
conseillé
Classement