[JAVA] Je voulais démarrer un serveur AP et déboguer avec juste la commande Maven

introduction

Comme le titre l'indique, je voulais créer un environnement dans lequel l'exécution des étapes peut être effectuée uniquement avec la commande Maven.

Je n'avais pas assez de ressources pour lancer Docker ou VM, donc je ne pouvais pas attendre pour cloner, extraire et construire, mais je voulais toujours faire la vérification des variables d'exécution et la vérification des différences de version.

Donc, j'ai pensé que je devrais essayer d'utiliser l'ancien ** Codehaus Cargo (ci-après Cargo) **, donc cet article a été écrit. Je vais.

C'est un outil qui existe depuis longtemps, et le contenu est maintenant renouvelé comme "Est-ce Maven de nos jours?"

Exigences

Les choses nécessaires

Préparez les éléments suivants à l'avance.

Et voici ce que j'ai fait

cargo-jetty-launcher - GitHub

C'est bâclé, mais il ne s'agit que de pom.xml et du fichier de configuration Jetty. Fondamentalement, l'argument d'exécution de la commande mvn (option -D) est utilisé pour faire n'importe quoi.

Pour le moment, l'exemple d'application qui ouvre simplement la source de données ** org.codehaus.cargo: datasource-war ** fonctionnera avec la commande suivante.

git clone https://github.com/Piecemeal-Technology-Inc/cargo-jetty-launcher.git
cd cargo-jetty-launcher
mvn initialize compile cargo:run

Si vous accédez à http: // localhost: 8081 / change-context-root / test avec votre navigateur, vous verrez "Got connection!". La racine de contexte est contrôlée par context.path dans pom.xml.

Déboguons

Lancez VSCode et générez Java launch.json avec "Run" - "Add Configuration". Par conséquent, ajoutez la configuration suivante aux configurations.

launch.json


    {
       "type": "java",
       "name": "Debug (Remote 9990)",
       "request": "attach" , //Spécification de débogage à distance
       "projectName" : "cargo-jetty-launcher",
       "hostName": "localhost",
       "port": 9990, // pom.débogage xml.Match avec la propriété du port
       //Ajouter un chemin de référence à la source créée sous la cible
       "sourcePaths": [
           "${workspaceFolder}/target/sources-datasource-war.1.7.11/main",
           "${workspaceFolder}/target/sources-datasource-war.1.7.11/dependency"
       ]
    }

Maintenant que la préparation est terminée, vous pouvez exécuter les étapes en définissant un point d'arrêt et en démarrant le débogueur.

ezgif-4-be77008fa52c.gif

  1. Démarrez le serveur avec mvn cargo: exécutez
  2. target / sources-datasource-war.1.7.11 / main contient la source de war, mettez donc un point d'arrêt là où vous voulez vous arrêter.
  3. Exécutez la configuration créée par launch.json en déboguant
  4. Accédez à http: // localhost: 8081 / change-context-root / test
  5. Arrêtez-vous au point d'arrêt! Vous pouvez intervenir non seulement du côté de l'application, mais également de la source côté Jetty

en conclusion

※Mise en garde ** C'est le résultat d'essais et d'erreurs, donc je ne pense pas que ce soit fondamentalement la théorie. ** ** Si vous utilisez une source de données intégrée ou n'incluez pas la propre extension de Jetty, ce n'est pas grave si vous le faites normalement comme officiellement.

Comme il est généralisé dans une certaine mesure avec des arguments d'exécution, il peut être facilement déclenché en préparant une commande pour chaque application que vous souhaitez déclencher. De plus, comme il n'a aucune substance telle que le code source, l'environnement d'exécution peut être étendu dans PJ sous une forme légère.

Je pensais écrire cette histoire parce que j'étais vraiment dans Cargo, mais je ne pense pas qu'il y ait de demande, alors je vais l'omettre pour le moment.

Conditions préalables à l'utilisation

En premier lieu, le war et le source-jar à exécuter doivent se trouver dans le référentiel local ou distant. Si vous ne déboguez pas, vous n'avez pas besoin de source-jar, juste la guerre.

Recommended Posts

Je voulais démarrer un serveur AP et déboguer avec juste la commande Maven
Je veux amener Tomcat sur le serveur et démarrer l'application
Comment télécharger et exécuter le package Jar directement à partir du référentiel Maven avec juste la ligne de commande
Je veux passer la commande de démarrage à postgres avec docker-compose.
L'histoire que je voulais développer Zip
Je veux revenir à l'écran précédent avec kotlin et java!
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
Je voulais faciliter la programmation JavaFX avec Spring Framework
Je voulais ajouter @VisibleForTesting à la méthode
J'ai essayé de mesurer et de comparer la vitesse de Graal VM avec JMH
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...
IDE et Maven compilent avec toutes les informations de débogage
Lorsque Eclipse ne parvient pas à démarrer le serveur
Je voulais classer la botte à ressort dans un multi-projet
Mise à jour de Node.js avec nodebrew et script de la routine pour re-npm install -g
J'ai essayé ce que je voulais essayer avec Stream doucement.
[wip] Développement confortable et gratuit côté serveur avec le serveur
Que faire si le serveur Rails ne peut pas démarrer
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
Je souhaite utiliser le mode sombre avec l'application SWT
Connexion HTTPS avec Java au serveur de certificats auto-signé
Je veux faire des transitions d'écran avec kotlin et java!
Jusqu'à ce que vous construisiez un projet écrit scala avec Maven et que vous l'exécutiez avec la commande scala.
Pourquoi puis-je utiliser la commande rails installée avec gem? ??
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
J'ai essayé de résumer les bases de kotlin et java
Commande pour vérifier le nombre et l'état des threads Java
Je veux faire une liste avec kotlin et java!
Je veux appeler une méthode et compter le nombre
Je voulais juste créer une propriété réactive en Java
Je veux créer une fonction avec kotlin et java!
J'ai essayé de lier le chat avec le serveur de Minecraft avec l'API Discord
Comment exécuter React et Rails sur le même serveur
Je veux implémenter diverses fonctions avec kotlin et java!
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec la première application Android et Kotlin
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().