Heim  >  Artikel  >  Java  >  So packen Sie das Dubbo-Projekt mit Maven in ein JAR-Paket, um es auszuführen

So packen Sie das Dubbo-Projekt mit Maven in ein JAR-Paket, um es auszuführen

little bottle
little bottlenach vorne
2019-04-30 10:41:452727Durchsuche

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>
  • Führen Sie die JAR-Paketmethode aus

Die Verzeichnisstruktur nach dem Packen
enthält Klassendateien und erforderliche Konfigurationsdateiinformationen (mit Ausnahme ausgeschlossener Konfigurationsdateien)

So packen Sie das Dubbo-Projekt mit Maven in ein JAR-Paket, um es auszuführen

MANIFEST.MFenthä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
  • in ein JAR-Paket

Wenn Sie alle abhängigen JAR-Pakete in einem JAR-Paket ausführen müssen, können Sie maven-shade-plugindies 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen