美文网首页
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