Die in diesem Artikel beschriebene Methode zur Verwendung von Maven zum Packen des Dubbo-Projekts in ein JAR-Paket zur Ausführung lautet: Verwenden Sie das Maven-Paketierungs-Plugin maven-jar-plugin, um am Ende der Datei pom.xml etwas Code hinzuzufügen . Interessierte Freunde können einen Blick darauf werfen, ich hoffe, es kann Ihnen helfen
Maven-Verpackungsmethode
Verwenden Sie das Maven-Verpackungs-Plug-In maven-jar-plugin
Fügen Sie am Ende den folgenden Code hinzu pom.xml
Datei. maven-dependency-plugin
bezieht sich auf das Kopieren des abhängigen JAR-Pakets in das angegebene Verzeichnis maven-resources-plugin
Kopieren der abhängigen Ressourcen in das angegebene Verzeichnis
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <configuration> <archive> <manifest> <!-- 是否依赖外部jar包 --> <addClasspath>true</addClasspath> <!-- 依赖外部jar包路径 --> <classpathPrefix>lib/</classpathPrefix> <!-- 启动函数 --> <mainClass>com.alibaba.dubbo.container.Main</mainClass> </manifest> </archive> <!-- 打包之后输出目录 --> <outputDirectory>${project.build.directory}/maven-archiver</outputDirectory> <!-- 剔除已打包的配置文件 --> <excludes> <exclude>*.*</exclude> <exclude>config/*</exclude> <exclude>config/tencent/*</exclude> <exclude>META-INF/spring/*</exclude> </excludes> </configuration> </plugin> <!-- 拷贝依赖的jar包到lib目录 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/maven-archiver/lib </outputDirectory> </configuration> </execution> </executions> </plugin> <!-- 拷贝依赖的资源文件包到resources目录 --> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/maven-archiver/resources</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build>
Die Verzeichnisstruktur nach dem Packen
enthält Klassendateien und erforderliche Konfigurationsdateiinformationen (mit Ausnahme ausgeschlossener Konfigurationsdateien)
MANIFEST.MF
enthält die Für den Betrieb benötigte Informationen
Class-Path: lib/commons-beanutils-1.8.3.jar lib/commons-betwixt-0.8.jar ... Main-Class: com.alibaba.dubbo.container.Main
java -jar
Befehl starten
java -jar Bei der Ausführung des Befehls wird das Verzeichnis META-INFMANIFEST.MF als Hauptklassenparameter verwendet Dies ist der Einstiegspunkt der angegebenen Funktion beim Packen.
java -jar x-0.0.1-SNAPSHOT.jar
java -cp
Startbefehl
java -cp .:x-0.0.1-SNAPSHOT.jar packname.mainclassname
Da ich in meinem Projekt auf externe Ressourcendateien verweisen muss, starte ich es normalerweise auf diese Weise
Die Adresse der Konfigurationsdatei ist ein absoluter Pfad
java -cp /Users/username/resources:dubbo-service-1.0.jar com.alibaba.dubbo.container.Main
-cp
und -classpath
haben die gleiche Wirkung
java -cp gibt normalerweise den Pfad anderer Klassen an, von denen die Operation abhängt Klassenbibliotheken. Bei JAR-Paketen und dergleichen werden mehrere Abhängigkeiten durch Semikolons „;“ auf Window
und „:“ auf linux
getrennt.
Ausdruck unterstützt Platzhalter
java -cp .:/Users/username/*.jar packname.mainclassname
Wenn Sie alle abhängigen JAR-Pakete in einem JAR-Paket ausführen müssen, können Sie maven-shade-plugin
dies verwenden Plugin.
Die Hauptfunktion dieses Plug-Ins besteht darin, das abhängige JAR-Paket in das aktuelle JAR-Paket zu packen und die Klasse während des Packens umzubenennen, wodurch der Mehrversionskonflikt des JAR-Pakets gelöst werden kann. Weitere Informationen finden Sie hier die offizielle Plug-in-Dokumentation.
Verwandte Tutorials: Java-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo packen Sie das Dubbo-Projekt mit Maven in ein JAR-Paket, um es auszuführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!