[JAVA] Comment ajouter un chemin de classe dans Spring Boot

La dernière fois, lorsque j'enquêtais sur MessageSource, j'avais besoin de placer le fichier de propriétés qui gère le message en dehors du projet Spring Boot. Recharger la source du message Spring

À ce moment-là, lorsque j'ai étudié comment ajouter un chemin de classe avec Spring Boot, il y avait plusieurs méthodes, je vais donc les résumer.

Les paramètres peuvent différer selon la méthode de démarrage, et il peut y avoir plusieurs méthodes de configuration.

environnement

Lors du démarrage avec mvn spring-boot: run

C'est le cas lors du démarrage d'une application à l'aide du plugin Spring Boot Maven. Vous pouvez l'ajouter de l'une des manières suivantes.

Spécifiez dans l'argument de démarrage

Vous pouvez spécifier plusieurs chemins séparés par des virgules.

mvn spring-boot:run -Dspring-boot.run.folders=[chemin]

Ecrire dans pom.xml

pom.xml


<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <folders>
            <folder>[chemin]</folder>
        </folders>
    </configuration>
</plugin>

Pour le pot exécutable

Lors de la création d'un fichier exécutable et de son exécution avec la commande java. À propos, le chemin d'accès aux classes n'est pas ajouté même si vous procédez comme suit.

Mauvais exemple


java -cp [chemin] -jar jarFile

La commande java ignore -cp si -jar est spécifié.

Changer la classe principale

Vous pouvez ajouter un chemin de classe en utilisant PropertiesLauncher comme classe principale.

Si vous utilisez le plugin Spring Boot Maven, vous pouvez utiliser le «Lanceur de propriétés» en définissant «layout» sur «ZIP» ou «DIR».

pom.xml


<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <layout>ZIP</layout>
    </configuration>
</plugin>

Ensuite, en ce qui concerne les paramètres liés au chemin de classe à ajouter, il existe plusieurs méthodes de paramétrage. Ils sont répertoriés par ordre de priorité décroissant.

Spécifié dans les propriétés du système

Vous pouvez ajouter le chemin de classe au démarrage avec -Dloader.path.

java -Dloader.path=[chemin] -jar jarFile

Au fait, je l'ai lancé comme -Dloader.path = [chemin] après -jar et cela n'a pas fonctionné, donc j'étais inquiet pendant un moment. La commande java doit être spécifiée dans l'ordre java [-options] -jar jarFile [args ...].

Spécifier avec la variable d'environnement

Défini sur la variable d'environnement LOADER_PATH. Vous pouvez le démarrer en utilisant la commande java normalement.

windows


set LOADER_PATH=[chemin]

linux


export LOADER_PATH=[chemin]

Spécifiez dans le fichier de propriétés

Placez le fichier de configuration directement sous les ressources avec le nom de fichier loader.properties. C'est également OK si vous utilisez la commande java normalement pour le démarrer.

loader.properties


loader.path=[chemin]

Le nom et l'emplacement du fichier peuvent être modifiés par réglage.

Spécifiez dans le fichier manifeste

Vous pouvez ajouter le chemin de classe en spécifiant Loader-Path dans le fichier manifeste. Commencez normalement par la commande java.

Si vous utilisez Maven Jar Plugin, vous pouvez définir comme suit.

pom.xml


<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifestEntries>
        <Loader-Path>[chemin]</Loader-Path>
      </manifestEntries>
    </archive>
  </configuration>
</plugin>

Résumé

Il y a plusieurs façons d'utiliser Executable Jar, mais je me suis demandé si les propriétés système ou les variables d'environnement pouvant être définies au démarrage seraient bonnes.

Dans le cas d'un fichier de propriétés ou d'un fichier manifeste, le chemin est écrit en code solide, donc j'ai l'impression qu'il est difficile de le faire si les paramètres sont différents pour chaque environnement.

Ou vous pouvez créer un fichier de propriétés pour chaque environnement et spécifier le nom du fichier de propriétés dans les propriétés système au démarrage.

Recommended Posts

Comment ajouter un chemin de classe dans Spring Boot
Comment créer un projet Spring Boot dans IntelliJ
Comment se lier avec un fichier de propriétés dans Spring Boot
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment utiliser Lombok au printemps
Comment configurer Spring Boot + PostgreSQL
[Spring Boot] Comment obtenir des propriétés dynamiquement à partir d'une chaîne contenue dans une URL
Comment utiliser ModelMapper (Spring boot)
Comment modifier la valeur de paramètre de application.properties au moment du démarrage dans Spring Boot
Comment appeler et utiliser l'API en Java (Spring Boot)
Comment ajouter les mêmes index dans un tableau imbriqué
Comment contrôler les transactions dans Spring Boot sans utiliser @Transactional
Comment inclure Spring Tool dans Eclipse 4.6.3?
Comment ajouter un nouveau hachage / tableau
Comment publier une bibliothèque dans jCenter
Comment diviser un fichier de message Spring Boot
Ajoutez une botte de printemps et un dégradé à éclipse
Comment créer un hinadan pour un projet Spring Boot à l'aide de SPRING INITIALIZR
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Exécuter un projet Spring Boot avec VS Code
Comment afficher une page Web en Java
Comment réduire l'image de Spring Boot Docker
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Comment exécuter une tâche djUnit dans Ant
Comment créer un thème dans Liferay 7 / DXP
Comment ajouter conditionnellement une classe html.erb dans Rails
Conseils Java - Créez un projet Spring Boot avec Gradle
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
Ajouter classpath: au chemin spécifié dans spring.datasource.schema
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Comment définir plusieurs orm.xml dans Spring4, JPA2.1
[Spring Boot] Comment se référer au fichier de propriétés
Spring Boot - Comment définir le délai d'expiration de la session
Comment générer automatiquement un constructeur dans Eclipse
Comment afficher les caractères saisis dans Spring Boot sur le navigateur et les liens de référence [Introduction à Spring Boot / Pour les débutants]
Connectez-vous aux applications Web Spring Boot sur la plate-forme Microsoft ID
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Comment effacer toutes les données d'une table particulière
Comment créer un environnement Java en seulement 3 secondes
Comment définir l'injection de dépendance Spring Boot (DI)
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
Un mémorandum de dépendance à Spring Boot2 x Doma2
Comment créer un URI de données (base64) en Java
Comment lancer une autre commande dans un programme Ruby
Comment afficher un aperçu du navigateur avec VS Code
[Comment insérer une vidéo dans un hameau avec Rails]
Comment écrire une recherche de comparaison de dates dans Rails
[Introduction à Spring Boot] Soumettez un formulaire à l'aide de thymeleaf
Comment se moquer d'un appel de super méthode dans PowerMock
Comment tester l'écran de téléchargement de fichiers avec Spring + Selenium
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Comment convertir un fichier en tableau d'octets en Java
[Rails 6] Comment définir une image d'arrière-plan dans Rails [CSS]