美文网首页
IDEA小胖包打包方式

IDEA小胖包打包方式

作者: 喵星人ZC | 来源:发表于2020-05-13 20:56 被阅读0次

    一、现象说明
    pom有以下依赖

       <dependencies>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
        </dependency>
    
        <!--阿里巴巴开源json解析框架-->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.51</version>
        </dependency>
    
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>${logback.version}</version>
        </dependency>
    
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>${logback.version}</version>
        </dependency>
      </dependencies>
    

    IDEA常用打包方式,只会包含我们自己编写的主类,不会包含依赖jar包。点击package打包后


    image.png

    使用WinRAR打开dw-1.0.jar,发现只有自己编写的主类


    image.png
    image.png

    而maven添加的依赖没有打进去,传到服务器执行会报错(因为服务没有我们添加的依赖jar包)


    image.png

    所以我们需要将服务器上没有的jar包打进去(例如spark开发需要把spark-streaming-kafka-0-10_2.11包打进去,因为提交spark作业的客户端只有spark-core、spark-sql等的jar包)

    二、具体操作
    1、pom文件添加maven-assembly-plugin
    在 <plugins></plugins>标签里面

    <!--  加载打包插件 -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
              <configuration>
               <!-- jar包的后缀名 -->
                <descriptorRefs>
                  <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
              </configuration>
            </plugin>
    
    

    2、编辑IDEA运行的Edit Configuration


    image.png

    点击+选择Mavn


    image.png image.png

    添加命令:clean assembly:assembly


    image.png

    3、对不需要的依赖jar添加provided,有provided标记的就不会打进最终包里面(打包完成后本地运行记得去掉provided)

    <dependencies>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>${slf4j.version}</version>
          <scope>provided</scope>
        </dependency>
    
        <!--阿里巴巴开源json解析框架-->
        <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
          <version>1.2.51</version>
        </dependency>
    
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>${logback.version}</version>
        </dependency>
    
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>${logback.version}</version>
        </dependency>
      </dependencies>
    

    4、运行刚才的manven命令


    image.png image.png

    WinRAR打开查看ch里面就是pom里面的logback相关的依赖,com里面是fastjson相关的依赖,因为slf4j添加了provided标记所以这里没有。

    image.png image.png

    相关文章

      网友评论

          本文标题:IDEA小胖包打包方式

          本文链接:https://www.haomeiwen.com/subject/sfmonhtx.html