今天试着将一个maven项目打成jar包供其他项目使用,虽然看起开,对于第一次弄得我还是费了不少功夫,在此记录一下,方便日后查看也给和我一样在此处刨坑的小伙伴们指点迷津。

先讲一下此次打jar包的基本情况:

IDE:idea,maven,这里和jdk版本无关就不做介绍了。

目的:一个maven项目(依赖了第三方jar包)在idea中使用maven打成jar包,然后放在其他项目中使用

首先呢要保证打包项目正常可用以及maven和第三方依赖包以及maven插件没有报错也就是红色波浪线,有则在有网环境中下载依赖即可。

如果打包项目中有test又想跳过test打包则点击上图蓝色闪电按钮 即可

打包方式这里有两种:1、将第三方依赖包打成class类放置到jar包。2、将第三方依赖包打成jar包另外放置。

1、在pom.xml中加入如下代码:下面代码是<!-- 将依赖的jar包中的class文件打进生成的jar包-->

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <finalName>searchIndex</finalName>
                    <descriptorRefs>
<!-- 将依赖的jar包中的class文件打进生成的jar包-->
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
<!-- 有Main函数的类:为了生成的jar包使用命令执行时的入口函数,可灵活增加活删除-->
                            <mainClass>com.yourcompany.yourproject.MainClass</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
<!-- <goal>single</goal>-->
                            <goal>assembly</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

2、将第三方依赖包打成jar包另外放置。

<!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-jar-plugin</artifactId>  
                <configuration>  
                    <archive>  
                        <manifest>  
                            <addClasspath>true</addClasspath>  
                            <classpathPrefix>lib/</classpathPrefix>  
                            <mainClass>com.xxx.uploadFile</mainClass>  
                        </manifest>  
                    </archive>  
                </configuration>  
            </plugin>  
            <!-- 拷贝依赖的jar包到lib目录 -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-dependency-plugin</artifactId>  
                <executions>  
                    <execution>  
                        <id>copy</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>copy-dependencies</goal>  
                        </goals>  
                        <configuration>  
                            <outputDirectory>  
                                ${project.build.directory}/lib  
                            </outputDirectory>  
                        </configuration>  
                    </execution>  
                </executions>  
            </plugin>

如果想要部分第三方依赖包打进jar包,其余不想打进去则可以在pom.xml中使用<scope>test</scope>,该标签会在文章尾有介绍

在打包命令中使用到的有如下图三个命令

依次点击即可并保证控制台输出BUILD SUCCESS字样。

本人在package时提示Failed to execute goal org.codehaus.mojo:findbugs-maven-plugin:3.0.5:check (analyze-compile) on project netconf-java: failed with 2 bugs and 0 errors 。在pom.xml中删除对应的org.codehaus.mojo插件即可

最后就会在classes同级目录下生成对应的jar包

至此,打包已完成,只需要在目标项目中引入该jar包即可,如下图:

也可以:

 <dependency><groupId>xxx</groupId><artifactId>xxx</artifactId><version>v0.1</version><scope>system</scope><systemPath>${project.basedir}/lib/xxx.jar</systemPath></dependency>

如果在使用该jar包时报错:Exception in thread "main" java.lang.NoClassDefFoundError,则应该是第三方依赖jar包没有导入到jar包中,回头检测pom.xml文件中对应的依赖包是否是<scope>compile</scope>。

<scope>的值的含义:
compile,缺省值,适用于所有阶段,会随着项目一起发布。 
provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

idea打jar包(包括依赖包)相关推荐

  1. python 查询包_查找Python包的依赖包(语句)

    Window 10家庭中文版,Python 3.6.4, 今天看完了urllib3的官文(官方文档),因为没有具体使用过,所以,仍然是一知半解,但是,突然想知道 urllib3以及前面学习过的requ ...

  2. maven 打包指定依赖包_Maven打包成Jar文件时依赖包的问题

    我们项目中使用到第三方的库文件,这些jar库文件并没有放到Maven中央库上,导致我们需要在项目中自己配置使用.我们的两三个开发人员对Java都是很熟,因此在使用中遇到了一些问题,表现在:在本地中引入 ...

  3. 解决使用maven打jar包缺失依赖包问题

    问题描述 今日,遇到一个问题,在用IDEA写好Java 代码之后,在IDEA运行没有问题,但是用maven打成jar包再运行的时候,却报缺失依赖包的情况.例如下面情况 pom.xml配置 <?x ...

  4. maven编译jar包时打一个瘦包,依赖包和配置文件到jar包外面

    背景 打的jar包很大 很多时候我们在开发的时候,maven的依赖包非常多,导致我们最后打的一个jar包有一百多MB,需要将包上传到liunx环境耗时非常久,很多时候我们并没有改变依赖包,而只是改变我 ...

  5. ubuntu 下载完整deb包及依赖包

    查看依赖: apt-cache depends XXX 下载 deb 依赖包 apt-get download $(apt-cache depends --recurse --no-recommend ...

  6. git在项目中忽略包node_modules依赖包和git 指令常用汇总

    1.在项目拉起依赖包时提交git时, 通过在项目根目录中创建文件.gitignoe 并在文件中添加忽略的文件名如: node_modules node_modules/ # 下面自己配置使用的 忽略文 ...

  7. maven打的包带exec包比不带的大_spring boot maven打包可执行jar包缺少依赖包的问题...

    问题描述:spring boot使用maven的package命令打出来的包,却不包含依赖的jar包 问题原因:打包时使用了maven默认的maven-jar-plugin插件,而不是spring-b ...

  8. springboot打包成jar,并且把依赖包放到jar外面

    打成jar包pom文件设置不赘述,修改pom.xml <plugin>                 <groupId>org.springframework.boot< ...

  9. python导出依赖包

    但行好事,莫问前程,有任何疑问请留言,作者有问必答哦!!! 创建虚拟环境传送门: centos7创建python虚拟环境_再怼人我就是狗的博客-CSDN博客centos7创建python虚拟环境htt ...

最新文章

  1. iOS 命令行自动打包 (archive)
  2. 【致青春】谨献给我已逝去的高三
  3. 并行编程中的“锁”难题
  4. 【Java9】异常,finally,线程创建(卖票),线程同步(卖包子),线程练习
  5. 1.9 _07 不与最大数相同的数字之和 python
  6. c语言115写成16进制,西安电子科技大学计算机导论与C语言程序设计 计算机文化概论.pdf...
  7. 强悍的 ubuntu —— 窗口界面管理与设置
  8. Windows 系统彻底卸载 SQL Server 通用方法
  9. 蓝桥杯历届试题-回文数字
  10. 微信小程序 canvas type = 2d 绘制海报心得(包括怎么绘制图片和圆角图片和圆角矩形等)
  11. Linux中 安装一些实用小软件总结
  12. 《数据库原理与应用》实验一
  13. oceanbase安装记录
  14. 蓝桥杯-第六届省赛第一题
  15. 增加 swap 空间
  16. STM32CubeMX实战教程(七)——TFT_LCD液晶显示(附驱动代码)
  17. 【Web技术】1008- coding优雅指南:函数式编程
  18. bzoj3811 玛里苟斯
  19. C#使用随机数模拟器来模拟世界杯排名(三)
  20. 按住ctrl键不能批量选_如何在不按住Ctrl键的情况下遵循Word 2013中的超链接

热门文章

  1. internal error code, arguments: [13013], [5001], [8943】
  2. Hadoop-HDFS 简介以及配置和JAVA API操作
  3. obs多推流地址_还在为拿不到推流地址而烦恼吗?三分钟让你用上OBS进行高清直播...
  4. Jpg格式怎么转png格式?手把手教你图片格式转换
  5. CCF CSP 201709-1 打酱油 经验总结
  6. 直流伺服电机调速控制系统解析,直流伺服电机的调速控制方式
  7. 六顶思考帽帮您系统化决策
  8. CDH、HDH、IDH、DDH、BDH、DBDH假设的概念
  9. 自动转发短信安卓转iOS
  10. Java 加解密技术之 MD5