9
votes

Comment puis-je échouer Maven Build si EXEC: Le but Java échoue?

Nous utilisons le Maven Exec: Java Objectif pour exécuter une application Java personnalisée qui configure une base de données à utiliser avec nos tests d'intégration. Nous voulons utiliser exécutif: java sur exécutif: exécutant pour pouvoir utiliser les dépendances du projet dans la classe de classe de la classe principale à utiliser. Quelques fois l'application a échoué pour des raisons valables, mais la construction de Maven a continué comme si rien n'était mal passé.

Y a-t-il un argument de type "FailonError" qui peut être utilisé avec EXEC: Java ? J'ai peur d'ajouter system.exit () à la classe étant exécutée, car je soupçonne qu'il va tuer non seulement elle-même, mais aussi se mavier, en raison du fait qu'il fonctionne dans le Maven VM .


1 commentaires

Est-il possible d'utiliser Exec: EXEC, dans ce cas, je suppose que vous pouvez utiliser des codes de retour?


4 Réponses :


4
votes

Ce n'est pas une fonctionnalité qu'il a par défaut, mais vous voudrez peut-être la demander à http: //jira.codehaus.org/browse/mexec , car ce serait un ajout simple.

Si vous voulez EXEC: Java Pour échouer la version, l'appel principal doit lancer une exception au lieu de retourner un code de sortie non nul.

Si ce n'est pas une option, vous pouvez toujours utiliser exec: exécuté - voir http://mojo.codehaus.org/exec-maven-plugin/examples/example-exec-for-java-programs.html Pour une description sur la manière d'ajouter les dépendances du projet à la classe de classe.

Une autre option si aucun de ces raisons pour une autre raison est d'utiliser le plugin antrun avec le tâche. Les dépendances du projet peuvent également être transmises à cela.


2 commentaires

Merci Brett, j'ai fini par utiliser le plugin Antrun à la fin.


J'essaie d'utiliser EXEC: EXEC avec un Java principal parce que je dois contrôler le code de sortie et quand il passe au système.exit (-1), il tue la construction même lorsqu'il est censé être exécuté dans un processus d'enfant . Que faire?



13
votes

Je viens de faire un test simple avec la configuration de plug-in suivante déclarée dans une POM: xxx

et la classe Java suivante: xxx

Et c'est ce que je reçois lors de l'appelant le Test d'intégration-test Phase: xxx

L'intégration L'intégration n'est jamais exécutée , à cause de l'erreur de construction.

Donc, la question est de savoir comment gérez-vous des erreurs dans la classe Java qui charge votre DB? Lance une exception une option?


2 commentaires

Merci Pascal. J'ai eu l'occasion de regarder la source et de voir beaucoup d'erreurs non manquées. Je crois que votre solution fonctionnerait si la classe étant appelée avait une meilleure manipulation des exceptions. Merci pour la réponse complète!


Merci! J'ai eu le même problème de démarrer HSQLDB. Une exception a été lancée et non affichée. Je reçois la même erreur ci-dessus !. J'absais non invalide S à HSQLDB ..........



0
votes

En plus de lancer une exception, vous pouvez également utiliser system.exit (n) , où n n'est pas zéro pour que la construction maven soit échoue.


0 commentaires

1
votes

pour objectif Java system.exit (n) , où n n'est pas zéro ne fonctionnera pas. Besoin de lancer une exception Java.


0 commentaires