Maison  >  Article  >  Java  >  Comment utiliser Maven pour empaqueter le projet Dubbo dans un package jar à exécuter

Comment utiliser Maven pour empaqueter le projet Dubbo dans un package jar à exécuter

little bottle
little bottleavant
2019-04-30 10:41:452652parcourir

La méthode décrite dans cet article pour utiliser maven pour empaqueter le projet dubbo dans un package jar pour l'exécution est la suivante : utilisez le plug-in d'empaquetage maven maven-jar-plugin pour ajouter du code à la fin du fichier pom.xml. . Les amis intéressés peuvent y jeter un œil, j'espère que cela pourra vous aider

Méthode d'emballage maven

Utilisez le plug-in d'emballage maven maven-jar-plugin
Ajoutez le code suivant à la fin du pom.xml fichier.
maven-dependency-plugin fait référence à la copie du package jar dépendant dans le répertoire spécifié
maven-resources-plugin Copie des ressources dépendantes dans le répertoire spécifié

    <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>
  • Exécutez la méthode du package jar

La structure des répertoires après emballage
inclut les fichiers de classe et les informations sur les fichiers de configuration requis (à l'exclusion des fichiers de configuration exclus)

Comment utiliser Maven pour empaqueter le projet Dubbo dans un package jar à exécuter

dans MANIFEST.MFcontient les informations nécessaires au fonctionnement

Class-Path: lib/commons-beanutils-1.8.3.jar lib/commons-betwixt-0.8.jar
...
Main-Class: com.alibaba.dubbo.container.Main

java -jar
start command
java -jar Lors de l'exécution de la commande, le répertoire META-INFMANIFEST.MF sera utilisé Main-Class paramètre, c'est le point d'entrée de la fonction spécifiée lors du packaging.

java -jar x-0.0.1-SNAPSHOT.jar

java -cp
Commande de démarrage

java -cp .:x-0.0.1-SNAPSHOT.jar packname.mainclassname

Parce que j'ai besoin de référencer des fichiers de ressources externes dans mon projet, je le démarre généralement de cette façon
L'adresse du fichier de configuration est un chemin absolu

java -cp /Users/username/resources:dubbo-service-1.0.jar com.alibaba.dubbo.container.Main

-cp et -classpath ont le même effet
java -cp spécifie le chemin des autres classes dont dépend l'opération, généralement bibliothèques de classes, pour les packages jar et autres, plusieurs dépendances sont séparées par des points-virgules ";" sur Window et ":" sur linux.
Expression prend en charge les caractères génériques

java -cp .:/Users/username/*.jar   packname.mainclassname
  • dans un package jar

Si vous devez exécuter tous les packages jar dépendants dans un seul package jar, vous pouvez utiliser maven-shade-plugin ceci plugin.
La fonction principale de ce plug-in est de regrouper le package jar dépendant dans le package jar actuel et de renommer la classe lors de l'empaquetage, ce qui peut résoudre le conflit multi-version du package jar. Pour plus de détails, vous pouvez vérifier. la documentation officielle du plug-in.

Tutoriels associés : Tutoriel vidéo Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer