Nous avons une situation où nous prenons une instance de jetée à l'intérieur du VM qui gère la grade. P>
Cependant, cela échoue à peu près lorsque nous courons à l'intérieur d'un démon grade: nous ne nous débarrassons pas totalement de l'instance de jetée, de sorte que cela doit mourir avec le processus des grades lui-même. (Cependant, ce n'est pas vraiment une grosse préoccupation, car nous ne voulons pas que le démon de gradle dans ce cas d'intégration d'IC Tests de ce temps). em> p>
Donc, nous aimerions savoir si la tâche actuelle est en cours d'exécution à l'intérieur d'un démon grade ou non - afin que nous puissions lancer une exception ou en informer l'utilisateur que c'est la mauvaise approche, veuillez exécuter ce démonisé. p>
3 Réponses :
Noms de gradle Noms l'un de ses threads "thread de démon", donc si vous autorisez un piratage, cela pourrait fonctionner:
def isDaemon = Thread.allStackTraces.keySet.any { it.name.contains "Daemon" };
Une autre solution serait de lire la propriété "Sun.Java.command".
Si vous êtes dans le démon, la valeur de gradle 2.5 est p> et Si vous n'êtes pas la valeur est p> donc un simple p> ferait le truc aussi p> < / p>
Je voulais le savoir à partir du contexte d'un plugin des grades. Après avoir vérifié la source des grades, j'ai finalement trouvé la réponse à l'aide de:
val daemonScanInfo: DaemonScanInfo? = (project as DefaultProject).services.get(DaemonScanInfo::class.java) val runningAsDaemon = !daemonScanInfo.isSingleUse
Peut-être que je ne comprends pas ce que vous avez après, mais
thread.currentthread (). Isdaemon () code> ne fonctionne pas?
Les grades ont cette "configuration de démon" permettant à la première commande de la commande d'obturation que vous utilisez incendie le processus de démon, et les commandes suivantes parlent que ce processus. C'est ainsi que vous n'abumusez pas le coût de démarrage pour les fichiers JVM et analyse, etc., vous obtenez une "réaction instantanée" à des commandes émises. Cependant, ce démon vit pour toujours (ou jusqu'à ce que vous le tuiez), et puisque la JVM peut devenir «polluée» par des classes chargées, etc., il devrait être possible de savoir de l'intérieur du script des grades, qu'il soit exécuté à l'intérieur d'une DAAMON ou de ne pas.