Est-il possible de compiler grunt projet de maven?
Je suis en train d'exécuter des tâches grunt de l'intérieur maven sans avoir à l'installer Node.js ou quoi que ce soit. C'est parce que je wan pas mon artefact à être emballé par Jenkins et je ne peux pas installer Node.js sur cette machine.
Je sais que c'est facile avec les mnp et de quelques commandes pour faire fonctionner tout ça, mais je pense aussi qu'il devrait être facile à intégrer avec maven, le problème est que je ne sais pas par où commencer car je suis nouveau sur npm.
Vous devez vous connecter pour publier un commentaire.
Oui, à l'aide de la frontend-maven-plugin, vous pouvez compiler Grunt projets via Maven (trouvé via le NodeJS liste de diffusion).
Que la documentation points, le plugin a les caractéristiques suivantes:
J'ai parcouru le code et il est assez simple. Dieu merci, quelqu'un a finalement mettre cela ensemble; c'est une solution élégante. Le référentiel comprend un exemple qui utilise régulièrement
Gruntfile.js
d'invoquer jshint analyse.Mise à JOUR 2014-09-19: Ce n'est plus la réponse la plus précise - s'il vous plaît jeter un oeil à certains de l'autre les réponses ci-dessous. Il était exacte au moment où j'ai répondu à la question, mais il semble y avoir eu beaucoup de progrès dans ce domaine depuis.
Je crains que vous êtes hors de la chance. Grunt est construit à l'aide d'un noeud et doit être installé à l'aide de mnp. Vous pourriez être en mesure de copier une installation existante de Grognement à partir d'un autre ordinateur si vous ne voulez pas utiliser npm, mais utilise toujours le
grunt
exécutable et toutes ses dépendances sur votre serveur de build.En plus de cela, beaucoup de Grunt tâches sont mises en œuvre comme Node.js les modules, et vous devrez les installer. Encore une fois, vous pourriez être en mesure de les copier à partir d'un autre serveur, où vous avez fait le Nœud.js/Grunt de l'installation, mais à un point, vous devez le faire.
Pour l'exécution de Grognement de Maven, votre meilleur pari est d'utiliser Maven plugin exec, puis d'exécuter le grognement exécutable à partir de là.
Comme une alternative, il existe plusieurs plugins Maven qui vous permettent de faire des choses semblables à Grunt dans une Java de mode. Ils nécessitent une configuration supplémentaire n'est pas compatible avec Grunt, donc YMMV. Celui que j'ai utilisé dans le passé est http://code.google.com/p/wro4j/, qui est livré avec un plugin Maven ainsi: http://code.google.com/p/wro4j/wiki/MavenPlugin
Aucune raison particulière pour laquelle vous ne pouvez pas installer Node.js sur votre serveur de build?
frontend-maven-plugin
, voir ma réponse ci-dessous.Vous pouvez utiliser grunt-maven-plugin. Il vous permet d'intégrer facilement des tâches Grunt dans Maven processus de construction. Pas de sale hacks.
C'est ce que j'utilise dans mon projet actuel, et il fonctionne tout simplement parfait.
Enfin j'ai fini avec cela (ce qui est assez proche mais ne résout pas le problème):
qui s'installe en local grunt-cli, mais si je n'ai pas installé node.js il ne vaut rien. Bien que j'essaie de l'installer node.js localement, il y a le besoin d'avoir installé python, g++ et de faire. Donc, je vais aller avec le BAISER de la solution: installer grunt dans le serveur de build.
Références:
https://github.com/mulesoft/npm-maven-plugin
https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
https://github.com/mcheely/requirejs-maven-plugin
Vous pourriez voulez extraire http://jhipster.github.io/ : c'est un générateur Yeoman, qui génère une demande qui a Maven, Grunt et Bower travaillant tous ensemble.
C'est un peu comme votre troisième option, mais tout est configuré pour vous, ce qui n'est pas facile. C'est aussi la génération de la base AngularJS et de Java, services REST pour vous
C'est un copie/coller de la solution qui travail en 2017 à l'aide de frontend-maven-plugin avant de construire, et maven-guerre-plugin pour construire la guerre.
Ce qu'il fait ? installer npm, bower, grunt,et tout ce dont vous avez besoin, puis exécutez npm install, bower install et enfin grunt build.
Vous pouvez supprimer/ajouter remplacer les étapes que vous voulez, pour moi c'est un plein de 30 sec installer/construction de la bibliothèque et du projet.
Alors vous pouvez
Run as
->Maven build ...
, avec l'objectifclean install
et le profilrelease
Le premier problème est que Maven est de Java, mais Grunt.js s'exécute sur l'Node.js moment de l'exécution. La méthode la plus simple d'intégration que j'ai jamais atteint entre les deux impliqués le maven-exec-plugin. Le maven-exec-plugin est capable d'exécuter .sh/.bat/.cmd scripts, selon le natif de l'OS que vous utilisez. Au cours d'un Maven build j'aurais le maven-exec-plugin exécuter un script nommé optimize-js.sh par exemple, ce qui serait tout simplement de faire quelque chose comme “grunt de presse –force”, ou quoi que ce soit. Les scripts peuvent être faits pour faire quoi que ce soit. L'important, c'est de configurer le maven-exec-plugin pour les exécuter dans le bon répertoire de travail. Bien sûr, “grunt” et “nœud” besoin d'être exécutable à partir de la ligne de commande.
Si le problème est l'installation de NodeJS sur le Jenkins machine, vous pouvez alors utiliser la NodeJS plugin Jenkins.
https://wiki.jenkins-ci.org/display/JENKINS/NodeJS+Plugin
Nous ne l'utilisez pas avec Maven (encore), mais nous avons grunt en cours d'exécution.
Peut être fait avec exec-maven-plugin.
Définir un script et de la dépendance à grunt-cli dans votre paquet.json:
Dans votre pom, ajouter les commandes à exécuter:
Il va maintenant fonctionner sur mvn package