[JAVA] Comment créer un fichier jar sans dépendances dans Maven

introduction

C'est le troisième de la série Maven. Plus tôt, j'ai écrit Comment créer un fichier jar exécutable dans Maven. En utilisant cette méthode, vous pouvez exécuter le programme java archivé dans le fichier jar avec la commande java -jar <nom du fichier jar à exécuter>.

Cependant, le fichier jar exécutable construit par cette méthode inclut toutes les dépendances utilisées dans le programme dans le fichier jar, donc si vous essayez de réécrire le contenu du fichier de configuration, etc., après avoir modifié le fichier source Vous devez le reconstruire.

Ensuite, par exemple, un fichier de propriétés qui affiche des valeurs de réglage que vous ne voulez pas écrire dans le programme, etc. perdra environ la moitié de la signification que vous avez donnée.

Si possible, ne regroupez pas le fichier de configuration, etc. avec le fichier jar et placez le fichier de configuration Correction directe> Redémarrer le programme Je veux le finir.

Donc cette fois, je vais vous montrer comment construire un fichier jar avec Maven qui n'inclut pas les fichiers jars et de configuration dépendants.

Dans la méthode de construction introduite cette fois, le point d'entrée du fichier jar n'est pas spécifié, donc le programme java ne peut pas être exécuté avec la commande ci-dessus.

Je ne sais pas comment le faire, mais si quelqu'un qui a lu cet article sait comment le faire, je vous serais reconnaissant si vous pouviez m'apprendre comment le faire.

Cela faisait longtemps, mais c'était un résumé de la façon dont je suis arrivé à écrire cet article et de ce que je m'apprête à écrire.

De là, je décrirai la méthode spécifique.

1. Créez un projet Maven

Tout d'abord, créez un projet à utiliser pour les tests.

1.1. Créer un projet

Créez le projet Maven comme d'habitude. Si vous ne savez pas comment créer un projet Maven, veuillez consulter ici.

1.2. Paramètres supplémentaires pour les tests

Pour ce projet, nous avons besoin de dépendances et de ressources à copier, nous les ajouterons donc.

1.2.1. Ajout de dépendances

Ajoutez le fichier jar dépendant pour voir la copie de la dépendance. Les fichiers jar dont dépend le projet Maven sont répertoriés dans pom.xml. Ce faisant, Maven téléchargera automatiquement les fichiers jar dépendants à partir du référentiel central.

■ Contenu de pom.xml

<dependencies>
	<dependency>

<! - Cette fois, ajoutez un enregistreur en tant que dépendance-> ch.qos.logback logback-classic 1.2.3

1.3. Ajout de ressources

Ajoutez un fichier de ressources pour vérifier la copie de la ressource. Cette fois, ajoutez le fichier de paramètres de journalisation (logback) (logback.xml) ajouté jusqu'à présent en tant que fichier de ressources. Ajoutez le fichier de configuration dans le dossier "src / main / resources".

■ Arborescence du projet après l'ajout de ressources picuture1.JPG

1.4. Modifié pour utiliser un enregistreur

Dans le projet hello-world, Hello World a été généré à l'aide de la sortie standard, mais modifions cette partie en un paramètre utilisant un enregistreur.

package hello.main;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**

1.5. Paramètres de Logback.xml

Le fichier de paramètres qui contrôle le mouvement de l'enregistreur est "logback.xml". logback lui-même fonctionne avec les paramètres par défaut sans lui, mais cette fois, il y a aussi un test de copie, alors écrivons exactement le fichier de paramètres. Il sert également de rappel de la façon d'écrire logback.xml, que j'oublie toujours, et décrit les paramètres à sortir sur la console et les paramètres à sortir dans un fichier.

■ Contenu de logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>

	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>logs/log%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>3</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%d{yyyy-MM-dd'T'HH:mm:ss'Z'} - %m%n</pattern>
		</encoder>
	</appender>

	<root level="DEBUG">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>
</configuration>

2. Copie du pot dépendant

Tout d'abord, configurez une copie du fichier jar dépendant, y compris les bibliothèques utilisées dans votre programme.

2.1. maven-dependency-plugin Pour copier les fichiers dépendants dans un répertoire différent de celui des fichiers jar, utilisez un plugin appelé maven-dependency-plugin. Ce plug-in vous permet de copier des fichiers jar dépendants dans un répertoire spécifié au moment de la construction.

2.2. Édition de pom.xml

Pour de tels paramètres, ajoutez les paramètres de construction du fichier jar à pom.xml comme dans l'exemple. Le but ici est de définir la copie en excluant les matériaux utilisés dans le test, ce qui est inhérent à Maven. Pour être précis, vous ne pouvez pas simplement définir le plug-in de dépendance, limitez simplement la portée des fichiers dépendants aux tests.

■ Contenu de pom.xml

<! - Limiter la portée au test-> junit junit 4.11 <! - Spécifiez la portée ici-> test

<! - Plugin pour copier les fichiers JAR dépendants-> org.apache.maven.plugins maven-dependency-plugin <! - Cliquez ici pour les dernières informations au moment de la rédaction-> 3.0.1 copy-dependencies package copy-dependencies <! - Copiez uniquement les matériaux utilisés dans la portée de compilation-> compile

3. Copie des ressources

Le terme ressource a de nombreuses significations, mais la ressource ici fait référence au fichier qui décrit les paramètres utilisés dans le programme java.

Plus précisément, il s'agit d'un fichier placé dans le répertoire "src / main / resources /" du projet Maven. Dans mon environnement préféré, je mets souvent des fichiers de paramètres de bibliothèque de journalisation, etc., comme je le fais dans la construction de projets.

En passant, je préfère utiliser l'environnement "logback + slf4j".

3.1. maven-resources-plugin Pour copier des ressources telles que des fichiers de configuration, utilisez un plugin appelé maven-resources-plugin.

3.2. Édition de pom.xml

Maintenant, ajoutons également les paramètres du plug-in à pom.xml. Le but ici est d'ajouter des paramètres sans ressources au fichier jar au moment de la construction. Si vous n'effectuez pas ce réglage, vous finirez par créer des ressources dans le fichier jar.

■ Contenu de pom.xml

<build>

<! - Décrit ici les paramètres d'exclusion des ressources au moment de la construction. src/main/resources <! - Spécifiez les ressources non incluses dans le fichier jar avec la balise excludes-> * org.apache.maven.plugins maven-resources-plugin 3.0.2 copy-resources package copy-resources ${basedir}/target/resources <! - En prime, spécifiez également le répertoire dans lequel copier la ressource-> src/main/resources true

finalement

Jusqu'à présent, nous avons présenté comment créer des fichiers en excluant les fichiers dépendants de jar. J'ai surfé sur Internet pendant un certain temps jusqu'à ce que j'arrive à ce point, mais j'ai eu du mal parce qu'il n'y avait pas de site Web japonais que je pourrais utiliser tel quel. L'une des raisons est que je n'ai pas une compréhension profonde de Maven en premier lieu, mais j'espère qu'il y a des gens dans la même situation qui peuvent les aider.

De plus, si quelqu'un sait comment le faire plus intelligemment, j'apprécierais que vous puissiez le signaler et m'apprendre cela.

J'ai beaucoup appris sur Maven ces jours-ci, donc je pense que c'est la dernière série Maven depuis un moment. J'ai écrit trois articles jusqu'à présent, mais Maven est un outil de construction, mais c'est un outil de construction. Il y a plusieurs façons de l'utiliser, et c'est profond, donc je peux l'introduire quand j'étudie différemment quelque part.

Série EX. Maven publiée par l'auteur

Pour référence, je résumerai les articles que j'ai écrits jusqu'à présent sous forme de liens. Si vous avez lu cet article, veuillez utiliser ce qui suit comme référence.

■ [Pour les super débutants] Super introduction à Maven http://qiita.com/ryota0001/items/e019ec4daaaf54684c53

■ Comment créer un fichier jar exécutable avec Maven http://qiita.com/ryota0001/items/e019ec4daaaf54684c53

Recommended Posts

Comment créer un fichier jar sans dépendances dans Maven
Comment faire un projet Maven
Comment ajouter un fichier jar dans ScalaIDE
Faisons une application multiplateforme avec JRuby (génération de fichier jar)
Comment charger une bibliothèque à partir d'un fichier JAR avec VSCode << Comment ne pas utiliser Maven / Gradle >>
Comment créer un fichier exécutable dans Maven
Comment démarrer un conteneur Docker avec un volume monté dans un fichier de commandes
[Comment insérer une vidéo dans un hameau avec Rails]
Comment convertir un fichier en tableau d'octets en Java
Comment déboguer le fichier jar généré avec Eclipse
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
Comment demander un fichier CSV au format JSON avec jMeter
Apprendre Ruby avec AtCoder 13 Comment créer un tableau à deux dimensions
Mappage à une classe avec un objet de valeur dans How to My Batis
Comment configurer un proxy avec authentification dans Feign
Que faire si on vous dit "il n'y a pas d'attribut manifeste principal" lors de la création d'un fichier jar contenant des dépendances dans un projet maven
Comment créer un conteneur Java
Comment créer un pilote JDBC
Comment créer un écran de démarrage
Comment créer un plug-in Jenkins
[Débutant] Comment supprimer AUCUN FICHIER
Comment créer un tableau Java
Comment créer un fichier jar et un fichier war à l'aide de la commande jar
Comment créer un nouveau projet Gradle + Java + Jar dans Intellij 2016.03
Ajouter un horodatage au nom de fichier JAR dans Gradle
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment ouvrir un fichier de script à partir d'Ubuntu avec du code VS
Comment faire un pot avec l'ancien Hadoop (hadoop-core-0.20.2-cdh3u6) dans Gradle: (Que faire si vous obtenez Impossible de développer ZIP ..)
Comment ajouter un pot local au pom.xml de Maven
Comment créer un résumé de calendrier Java
Créez un fichier jar avec la commande
Comment insérer une vidéo dans Rails
Comment créer un référentiel Maven pour 2020
Comment créer un robot Discord (Java)
Comment réaliser le téléchargement de fichiers avec Feign
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment publier une bibliothèque dans jCenter
Comment réaliser le téléchargement de fichiers avec Feign
[Mémo personnel] Comment interagir avec le générateur de nombres aléatoires en Java
Exécutable serveur avec Spring gradle Comment créer JAR et WAR
Si vous voulez créer un fichier zip avec Ruby, c'est rubyzip.
Comment lire le fichier de paramètres log4j dans un projet Java assemblé dans un fichier jar Memo
Comment créer une application avec un mécanisme de plug-in [C # et Java]
Comment télécharger et exécuter le package Jar directement à partir du référentiel Maven avec juste la ligne de commande
Lire une chaîne dans un fichier PDF avec Java
Comment afficher une page Web en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Comment exécuter une tâche djUnit dans Ant
Comment ajouter un chemin de classe dans Spring Boot
Comment créer un thème dans Liferay 7 / DXP
Comment créer un JRE léger pour la distribution
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
Comment se lier avec un fichier de propriétés dans Spring Boot
Ajouter un fichier jar obtenu de Maven à IntelliJ