[JAVA] So erstellen Sie eine JAR-Datei ohne Abhängigkeiten in Maven

Einführung

Dies ist der dritte in der Maven-Serie. Zuvor schrieb ich Wie man ein ausführbares JAR in Maven erstellt. Mit dieser Methode können Sie das in der JAR-Datei archivierte Java-Programm mit dem Befehl java -jar <Name der auszuführenden JAR-Datei> ausführen.

Die mit dieser Methode erstellte ausführbare JAR-Datei enthält jedoch alle im Programm verwendeten Abhängigkeiten in der JAR-Datei. Wenn Sie also versuchen, den Inhalt der Einstellungsdatei usw. nach dem Ändern der Quelldatei neu zu schreiben Sie müssen es neu erstellen.

Dann verliert beispielsweise eine Eigenschaftendatei, die Einstellungswerte ausgibt, die Sie nicht in das Programm schreiben möchten, etwa die Hälfte der von Ihnen ausgegebenen Bedeutung.

Wenn möglich, bündeln Sie die Einstellungsdatei usw. nicht mit der JAR-Datei und legen Sie die Einstellungsdatei ab Direkte Korrektur> Programm neu starten Ich möchte es beenden.

Dieses Mal werde ich Ihnen zeigen, wie Sie mit Maven eine JAR-Datei erstellen, die keine abhängigen Jars und Konfigurationsdateien enthält.

Bei der diesmal eingeführten Erstellungsmethode wird der Einstiegspunkt der JAR-Datei nicht angegeben, sodass das Java-Programm nicht mit dem obigen Befehl ausgeführt werden kann.

Ich weiß nicht, wie es geht, aber wenn jemand, der diesen Artikel gelesen hat, weiß, wie es geht, würde ich es begrüßen, wenn Sie mir beibringen könnten, wie es geht.

Es ist lange her, aber es war eine Zusammenfassung darüber, wie ich zu diesem Artikel gekommen bin und was ich schreiben werde.

Von hier aus werde ich die spezifische Methode beschreiben.

1. Erstellen Sie ein Maven-Projekt

Erstellen Sie zunächst ein Projekt, das Sie zum Testen verwenden möchten.

1.1. Erstellen eines Projekts

Erstellen Sie das Maven-Projekt wie gewohnt. Wenn Sie nicht wissen, wie Sie ein Maven-Projekt erstellen, lesen Sie bitte hier.

1.2. Zusätzliche Einstellungen zum Testen

Für dieses Projekt benötigen wir Abhängigkeiten und Ressourcen zum Kopieren, daher fügen wir sie hinzu.

1.2.1. Abhängigkeiten hinzufügen

Fügen Sie die abhängige JAR-Datei hinzu, um die Kopie der Abhängigkeit anzuzeigen. Die JAR-Dateien, von denen das Maven-Projekt abhängt, sind in pom.xml aufgeführt. Auf diese Weise lädt Maven die abhängigen JAR-Dateien automatisch aus dem zentralen Repository herunter.

■ Inhalt von pom.xml

<dependencies>
	<dependency>

<! - Fügen Sie diesmal einen Logger als Abhängigkeit hinzu-> ch.qos.logback logback-classic 1.2.3

1.3 Ressourcen hinzufügen

Fügen Sie eine Ressourcendatei hinzu, um die Kopie der Ressource zu überprüfen. Fügen Sie dieses Mal die Einstellungsdatei für den Logger (Logback) (logback.xml) hinzu, die bisher als Ressourcendatei hinzugefügt wurde. Fügen Sie die Konfigurationsdatei zum Ordner "src / main / resources" hinzu.

■ Projektbaum nach dem Hinzufügen von Ressourcen picuture1.JPG

1.4. Geändert, um Logger zu verwenden

Im Hello-World-Projekt wurde Hello World mit der Standardausgabe ausgegeben. Ändern Sie diesen Teil jedoch in eine Einstellung, die einen Logger verwendet.

package hello.main;

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

/**

1.5. Logback.xml-Einstellungen

Die Einstellungsdatei, die die Bewegung des Loggers steuert, lautet "logback.xml". logback selbst funktioniert mit den Standardeinstellungen ohne, aber dieses Mal gibt es auch einen Kopiertest. Schreiben wir also die Einstellungsdatei genau. Es dient auch als Erinnerung daran, wie man logback.xml schreibt, was ich immer vergesse, und beschreibt die Einstellungen, die an die Konsole ausgegeben werden sollen, und die Einstellungen, die in eine Datei ausgegeben werden sollen.

■ Inhalt von 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. Kopie des abhängigen Glases

Richten Sie zunächst eine Kopie der abhängigen JAR-Datei ein, einschließlich der in Ihrem Programm verwendeten Bibliotheken.

2.1. maven-dependency-plugin Verwenden Sie ein Plugin namens maven-dependency-plugin, um die abhängigen Dateien in ein anderes Verzeichnis als die JAR-Dateien zu kopieren. Mit diesem Plug-In können Sie abhängige JAR-Dateien beim Erstellen in ein bestimmtes Verzeichnis kopieren.

2.2 Bearbeiten von pom.xml

Fügen Sie für solche Einstellungen die Einstellungen zum Erstellen der JAR-Datei wie im Beispiel zu pom.xml hinzu. Hier geht es darum, die Kopie ohne die im Test verwendeten Materialien festzulegen, die Maven eigen sind. Um genau zu sein, können Sie nicht einfach das Abhängigkeits-Plug-In festlegen, sondern nur den Umfang der abhängigen Dateien auf das Testen beschränken.

■ Inhalt von pom.xml

<! - Beschränken Sie den Bereich auf test-> junit junit 4.11 <! - Geben Sie hier den Bereich an-> test

<! - Plugin zum Kopieren von abhängigen Gläsern-> org.apache.maven.plugins maven-dependency-plugin <! - Klicken Sie hier, um die neuesten Informationen zum Zeitpunkt des Schreibens zu erhalten-> 3.0.1 copy-dependencies package copy-dependencies <! - Kopieren Sie nur die im Kompilierungsbereich verwendeten Materialien-> compile

3. Kopie der Ressourcen

Der Begriff Ressource hat viele Bedeutungen, aber die Ressource bezieht sich hier auf die Datei, in der die im Java-Programm verwendeten Einstellungen beschrieben werden.

Insbesondere handelt es sich um eine Datei, die im Verzeichnis "src / main / resources /" des Maven-Projekts abgelegt wird. In meiner Lieblingsumgebung füge ich häufig Einstellungsdateien für Protokollierungsbibliotheken usw. ein, wie dies bei der Projektkonstruktion der Fall ist.

Nebenbei bevorzuge ich die Umgebung "logback + slf4j".

3.1. maven-resources-plugin Verwenden Sie zum Kopieren von Ressourcen wie Konfigurationsdateien ein Plugin namens maven-resources-plugin.

3.2 Bearbeiten von pom.xml

Fügen wir nun die Plug-In-Einstellungen auch zu pom.xml hinzu. Hier geht es darum, der JAR-Datei beim Erstellen ressourcenfreie Einstellungen hinzuzufügen. Wenn Sie diese Einstellung nicht vornehmen, werden am Ende Ressourcen in der JAR-Datei erstellt.

■ Inhalt von pom.xml

<build>

<! - Hier werden die Einstellungen zum Ausschließen von Ressourcen zum Zeitpunkt der Erstellung beschrieben. src/main/resources <! - Geben Sie Ressourcen an, die nicht in der JAR-Datei enthalten sind, mit dem Ausschluss-Tag-> * org.apache.maven.plugins maven-resources-plugin 3.0.2 copy-resources package copy-resources ${basedir}/target/resources <! - Geben Sie als Bonus auch das Verzeichnis an, in das die Ressource kopiert werden soll-> src/main/resources true

Schließlich

Bisher haben wir eingeführt, wie Dateien ohne jar-abhängige Dateien erstellt werden. Ich habe einige Zeit im Internet gesurft, bis ich an diesem Punkt angelangt war, aber es fiel mir schwer, weil es kein japanisches Web gab, das ich so nutzen konnte, wie es war. Einer der Gründe ist, dass ich Maven überhaupt nicht gut verstehe, aber ich hoffe, dass es Menschen in derselben Situation gibt, die ihnen helfen können.

Auch wenn jemand weiß, wie man es schlauer macht, würde ich es begrüßen, wenn Sie darauf hinweisen und mir das beibringen könnten.

Ich habe in diesen Tagen viel über Maven gelernt, daher denke ich, dass dies die letzte Maven-Serie für eine Weile ist. Ich habe bisher drei Artikel geschrieben, aber Maven ist ein Build-Tool, aber es ist ein Build-Tool. Es gibt viele Möglichkeiten, es zu verwenden, und es ist tiefgreifend, so dass ich es vorstellen kann, wenn ich irgendwo anders lerne.

EX. Maven-Serie vom Autor gepostet

Als Referenz werde ich die Artikel, die ich bisher geschrieben habe, als Links zusammenfassen. Wenn Sie diesen Artikel gelesen haben, verwenden Sie bitte Folgendes als Referenz.

■ [Für Super-Anfänger] Maven Super-Einführung http://qiita.com/ryota0001/items/e019ec4daaaf54684c53

■ Erstellen einer ausführbaren JAR-Datei mit Maven http://qiita.com/ryota0001/items/e019ec4daaaf54684c53

Recommended Posts

So erstellen Sie eine JAR-Datei ohne Abhängigkeiten in Maven
Wie erstelle ich ein Maven-Projekt?
So fügen Sie eine JAR-Datei in ScalaIDE hinzu
Versuchen Sie, mit JRuby eine plattformübergreifende Anwendung zu erstellen (Generierung von JAR-Dateien).
So laden Sie eine Bibliothek aus einer JAR-Datei mit VSCode << So verwenden Sie Maven / Gradle nicht >>
So erstellen Sie ein ausführbares JAR in Maven
So starten Sie einen Docker-Container mit einem in einer Batchdatei bereitgestellten Volume
[So fügen Sie ein Video mit Rails in haml ein]
So konvertieren Sie eine Datei in ein Byte-Array in Java
So debuggen Sie die generierte JAR-Datei mit Eclipse
Speichern von Dateien mit der angegebenen Erweiterung unter dem in Java angegebenen Verzeichnis in der Liste
So fordern Sie mit jMeter eine CSV-Datei als JSON an
Ruby mit AtCoder lernen 13 So erstellen Sie ein zweidimensionales Array
Zuordnung zu einer Klasse mit einem Wertobjekt in How to My Batis
So richten Sie einen Proxy mit Authentifizierung in Feign ein
Was tun, wenn beim Erstellen einer JAR-Datei mit Abhängigkeiten in einem Maven-Projekt die Meldung "Es gibt kein Hauptmanifestattribut" angezeigt wird?
So erstellen Sie einen Java-Container
So erstellen Sie einen JDBC-Treiber
So erstellen Sie einen Begrüßungsbildschirm
So erstellen Sie ein Jenkins-Plug-In
[Anfänger] So löschen Sie NO FILE
So erstellen Sie ein Java-Array
So erstellen Sie eine JAR-Datei und eine War-Datei mit dem Befehl jar
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
Fügen Sie dem JAR-Dateinamen in Gradle einen Zeitstempel hinzu
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
So öffnen Sie eine Skriptdatei von Ubuntu mit VS-Code
So erstellen Sie ein Glas mit dem alten Hadoop (hadoop-core-0.20.2-cdh3u6) in Gradle: (Was tun, wenn Sie ZIP nicht erweitern können?)
So fügen Sie ein lokales Glas zu mavens pom.xml hinzu
So erstellen Sie eine Java-Kalenderzusammenfassung
Erstellen Sie mit dem Befehl eine JAR-Datei
So fügen Sie ein Video in Rails ein
So erstellen Sie ein Maven-Repository für 2020
Wie erstelle ich einen Discord Bot (Java)
So erreichen Sie den Dateidownload mit Feign
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
So veröffentlichen Sie eine Bibliothek in jCenter
So erreichen Sie das Hochladen von Dateien mit Feign
[Persönliches Memo] Interaktion mit dem Zufallszahlengenerator in Java
Server mit Spring Gradle ausführbar So erstellen Sie JAR und WAR
Wenn Sie mit Ruby eine Zip-Datei erstellen möchten, ist dies Rubyzip.
Lesen der log4j-Einstellungsdatei in einem Java-Projekt, das in der JAR-Datei Memo zusammengestellt ist
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]
Herunterladen und Ausführen des Jar-Pakets direkt aus dem Maven-Repository mit nur der Befehlszeile
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
So zeigen Sie eine Webseite in Java an
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
So führen Sie eine djUnit-Aufgabe in Ant aus
So fügen Sie in Spring Boot einen Klassenpfad hinzu
So erstellen Sie ein Thema in Liferay 7 / DXP
So erstellen Sie eine leichte JRE für den Vertrieb
So implementieren Sie eine ähnliche Funktion in Rails
So erstellen Sie einfach ein Pulldown mit Rails
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Fügen Sie die von Maven erhaltene JAR-Datei zu IntelliJ hinzu