软件编程
位置:首页>> 软件编程>> java编程>> 详解用maven将dubbo工程打成jar包运行

详解用maven将dubbo工程打成jar包运行

作者:sf4y  发布时间:2023-10-20 04:34:42 

标签:maven,dubbo,jar包

maven打包方式

使用maven打包插件maven-jar-plugin

pom.xml文件最后新增以下代码。

maven-dependency-plugin是指将依赖的jar包复制到指定目录

maven-resources-plugin将依赖的resources复制到指定目录


<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>

运行jar包方式

打包之后的目录结构

包含了class文件,以及需要的配置文件信息(不包含excludes的配置文件)

详解用maven将dubbo工程打成jar包运行

MANIFEST.MF中包含了运行需要的信息


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

java -jar

启动命令

java -jar 执行命令时,会用到目录META-INFMANIFEST.MF中Main-Class的参数,这个是在打包的时候指定函数的入口。


java -jar x-0.0.1-SNAPSHOT.jar

java -cp

启动命令


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

因为我工程中需要引用外部的resources文件所以我通常用这种方式启动

配置文件地址是绝对路径


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

-cp-classpath是相同的效果

java -cp 是指定运行所依赖其他类的路径,通常是类库、jar 包之类,多个依赖在Window 上用分号";"隔开,linux上用":"隔开。

表达式支持通配符


java -cp .:/Users/username/*.jar packname.mainclassname

打成一个jar包

如果需要将依赖的jar包都达到一个jar包中运行,可以使用maven-shade-plugin这个插件。

这个插件的功能主要是:将依赖的jar包打包到当前jar包,并且在打包的时候把类重命名,可以解决jar包的多版本冲突,具体可以查询官方插件文档。

参考文档

maven官方插件文档

来源:https://segmentfault.com/a/1190000019025385

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com