[JAVA] Je veux ESLint dans le projet Maven. Je veux exécuter Node.js sans le mettre dans mon environnement.

introduction

J'avais des ennuis parce que je ne pensais pas qu'il y avait un plug-in si c'était aussi célèbre que ESLint, alors je l'ai résolu. Je ne veux pas installer node par moi-même en raison de problèmes de version, donc si j'utilise Maven dans un projet Java, j'ai réfléchi à la façon d'installer un plug, donc cela ressemble à cet article.

environnement

Adopt Open JDK Hotspot 11.0.3 Maven 3.6.0

Création de projet

Je vais l'omettre ici. Tout projet Maven va bien.

Création de package.json

Ce sera npm install dans Maven, alors créez-le d'abord.

package.json


{
  "dependencies": {},
  "devDependencies": {
    "eslint": "^6.5.1"
  }
}

Pour le moment, cela ressemble au minimum. Comme il existe de nombreuses versions, veuillez lire la version appropriée.

Mettons le nœud en premier

Puisqu'il peut être installé avec un plugin appelé frontend-maven-plugin, nous le définirons d'abord. Fondamentalement, vous pouvez le définir comme officiellement.

pom.xml


            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>1.8.0</version>
                <configuration>
                    <nodeVersion>v10.16.3</nodeVersion>
                </configuration>
                <executions>
                    <execution>
                        <id>install node and npm</id>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                        <phase>generate-resources</phase>
                    </execution>
                    <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                    <phase>generate-resources</phase>
                    <configuration>
                        <arguments>install</arguments>
                    </configuration>
                </execution>
                </executions>
            </plugin>

Commencez pour le moment

./mvnw generate-resources créera des fichiers liés aux nœuds.

Initialisez Eslint (ignorez si vous avez les fichiers nécessaires)

Si vous n'avez pas de fichier pour exécuter ESlint, vous devez l'initialiser ici. Cependant, veuillez noter que le fichier exécutable du nœud se trouve dans le dossier node de la racine du projet, vous devez donc l'ajouter à votre PATH.

export PATH=node/:$PATH

Tout ce que vous avez à faire est de l'exécuter et de le configurer. Je pensais d'abord le configurer à partir de Gitbash sur Windows, mais cela n'a pas fonctionné, donc je recommande de le faire sur un Mac uniquement ici.

node_modules/.bin/eslint --init

Créer eslint.json

Puisque je souhaite définir la même règle du côté Eclipse dans l'histoire du projet en cours de développement dans Eclipse, j'ai séparé le fichier caché init par un lien symbolique. Il semble que vous ne pouvez utiliser Tern que pour le faire avec Eclipse, mais c'est un peu pratique car vous pouvez suivre les mêmes règles.

Cela me rend triste de développer Javascript en utilisant Eclipse, donc je veux personnellement utiliser VSCode uniquement lorsque je joue avec Javascript, mais cette fois je peux faire tout le développement sur Eclipse pour la commodité du projet. Nous devons le faire, nous mettons donc en œuvre ce type de réponse.

Paramètres d'exécution d'ESLint

Maintenant que nous sommes prêts, nous allons modifier à nouveau pom.xml pour qu'ESLint puisse être exécuté à partir de Maven. Ceci est fait en utilisant ʻexec-maven-plugin. J'aurais aimé pouvoir le faire avec frontend-maven-plugin`, mais cela n'a pas fonctionné alors j'essaye d'utiliser un autre plug-in.

Ici, le paramètre consiste à appeler eslint_exec.sh à partir de la commande bash.

pom.xml


            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <id>exec-eslint</id>
                        <configuration>
                            <executable>bash</executable>
                            <arguments>
                                <argument>eslint_exec.sh</argument>
                            </arguments>
                        </configuration>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Le contenu de eslint_exec.sh ressemble à ceci. Définir le subordonné du nœud dans PATH est gênant pour l'avoir défini dans divers environnements, j'ai donc décidé de l'exécuter dans ce cas. Le reste exécute simplement ESLint. ʻSortie 0` est inclus parce que je ne voulais pas faire d'erreur même si je me suis fait prendre lors de la vérification lors de l'exécution avec Jenkins.

eslint_exec.sh


export PATH=node/:$PATH
node_modules/.bin/eslint src/main/resources/static/js/*/**
exit 0

Exécutez ESLint

Puisque la vérification fera ce que vous voulez faire cette fois, définissez le paramètre d'objectif pour vérifier.

./mvnw verify

en conclusion

Je ne pense pas qu'il soit possible de développer Javascript à cet âge, alors j'ai pensé qu'il aurait été préférable de penser à un moyen de le construire un peu plus facilement dans l'ensemble.

Recommended Posts

Je veux ESLint dans le projet Maven. Je veux exécuter Node.js sans le mettre dans mon environnement.
Mon mémorandum que je veux faire ValidationMessages.properties UTF8 dans Spring Boot
[Java Spring MVC] Je souhaite utiliser DI dans ma propre classe
Je veux utiliser @Autowired dans Servlet
Exécuter R à partir de Java Je veux exécuter rJava
Je souhaite envoyer un e-mail en Java.
Exécutez JUnit et Spock dans un projet maven
J'ai créé un conteneur Docker pour exécuter Maven
rsync4j --Je veux toucher rsync en Java.
Je veux être finalement même à kotlin
Je veux obtenir la valeur en Ruby
Je souhaite analyser morphologiquement le journal stocké dans la base de données et le stocker dans la base de données pour classer les messages 1
[Rails] Comment supprimer les données MySQL de l'environnement de production après les avoir placées dans l'environnement de développement
Commande Docker pour créer un projet Rails avec un seul coup dans l'environnement sans Ruby
Premier AWS Lambda (j'ai essayé de voir dans quel type d'environnement il fonctionne)
Je souhaite également utiliser Combine dans UIKit.
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
Je veux faire quelque chose comme "cls" en Java
Je veux utiliser NetBeans sur Mac → Je peux l'utiliser!
Je veux intégrer n'importe quel TraceId dans le journal
Je veux aussi utiliser des coquillages à Laradock! !!
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Je veux utiliser une petite icône dans Rails
Je souhaite définir une fonction dans la console Rails
[Android Studio] Je souhaite utiliser une bibliothèque Maven sur Android
Je veux arrêter les cas de serpent avec des définitions de table
Je veux cliquer sur une broche GoogleMap dans RSpec
J'ai installé Squid sur CentOS dans mon environnement local
Après avoir publié un article avec Rails Simple Calendar, je souhaite le refléter dans le calendrier.
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano