目录

  • maven添加依赖
  • maven添加本地依赖
  • 项目打包
  • maven打包
    • 将依赖包一同打进去
    • 将本地依赖包也一同打包
    • 可能出现的问题
    • 依赖包不与项目代码一同编译

maven添加依赖

首先,如何在maven项目中添加依赖包?这个相信对于大部分人来说是非常简单的,在pom.xml文件如下配置:

 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.4.3</version> </dependency>

maven添加本地依赖

那么,如果我们想添加其他人自己开发的依赖包的话,应该如何配置呢?一般的做法是先创建一个lib文件夹,然后将依赖包拷贝进去,接着在pom.xml如下配置:

 <dependency><groupId>com.hong.spark</groupId><artifactId>spark-KernelDensity_2.11</artifactId><version>0.0.1</version> <scope>system</scope><systemPath>${basedir}/lib/KernelDensity_2.11.jar</systemPath>    </dependency>

${basedir}/lib/KernelDensity_2.11.jar 这个就是你本地jar包的位置,也可以写成相对路径

项目打包

如果对于你的项目,你想要导出的jar是不包含依赖包,那就是非常简单了。直接地点击项目,然后右键选择Export,接着选择Java--->JAR file,最后选择你想要导出的路径就可以了。

maven打包

这里需要强调一下:maven将依赖包打包的方式有两种,
第一种是将依赖包跟项目代码一同编译然后再打包;
第二种是依赖包不与项目代码一起编译,只是将其放在一个目录下。
首先我们来看一下第一种方式如何打包吧。

将依赖包一同打进去

在你的pom.xml文件添加build配置,如以下内容:

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compile.source>1.8</maven.compile.source><maven.compile.target>1.8</maven.compile.target></properties><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>${maven.compile.source}</source><target>${maven.compile.target}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><archive><manifest><mainClass>com.quan.simple.IncFrame</mainClass></manifest><manifestEntries><Class-Path>.</Class-Path></manifestEntries></archive><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build>

com.quan.simple.IncFrame 这个填入的是你项目的主类。
接下来,点击项目,右键选择Run As-->Maven install,最后就安静的等待就可以了,生成的jar包路径在你的target文件夹中。
(第一次可能需要的时间会比较长,因为需要下载很多maven的依赖包和插件)

将本地依赖包也一同打包

按上述的方法,只是将仓库依赖的jar也一起编译打在同个jar包,但是对于本地的依赖包是没有一起打进去的,那么怎么将本地依赖包也一起打进去呢?
首先,你需要新建一个assembly.xml文件,路径可以随意,然后填入以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<assembly><id>jar-with-dependencies</id><formats><format>jar</format></formats><includeBaseDirectory>false</includeBaseDirectory><dependencySets><!-- 默认的配置 --><dependencySet><outputDirectory>/</outputDirectory><useProjectArtifact>true</useProjectArtifact><unpack>true</unpack><scope>runtime</scope></dependencySet><!-- 增加scope类型为system的配置 --><dependencySet><outputDirectory>/</outputDirectory><useProjectArtifact>true</useProjectArtifact><unpack>true</unpack><scope>system</scope></dependencySet></dependencySets>
</assembly>

接着,你的pom.xml的build配置也需要进行相应的修改

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>${maven.compile.source}</source><target>${maven.compile.target}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><archive><manifest><mainClass>com.quan.simple.IncFrame</mainClass></manifest><manifestEntries><Class-Path>.</Class-Path></manifestEntries></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals><configuration><descriptors><descriptor>assembly.xml</descriptor></descriptors></configuration></execution></executions></plugin></plugins></build>

其中<descriptor>assembly.xml</descriptor>,这里要填的就是你自己的assembly.xml的相对路径或绝对路径。
最后,跟上述方法中一样,通过maven进行打包就可以了。

可能出现的问题

可能会出现编译错误的问题,然后日志会写明:你使用的是java环境是jre而不是jdk。此时你需要将jre改为jdk。
点击项目,右键选择Properties,找到Java Build Path

选择JRE System,点击Edit…,最后重新选为jdk就行了。

在Execution environment中选择也可以。

依赖包不与项目代码一同编译

将依赖包打包在指定的目录下:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy-dependencies</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/lib</outputDirectory><overWriteReleases>false</overWriteReleases><overWriteSnapshots>false</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer></configuration></execution></executions>
</plugin>

路径可以自己设置,在这个配置参数里面:

<outputDirectory>${project.build.directory}/lib</outputDirectory>

欢迎关注同名公众号:“我就算饿死也不做程序员”。
交个朋友,一起交流,一起学习,一起进步。

maven打包--同时将仓库依赖和本地依赖的jar包也打进去相关推荐

  1. 解决maven打包时手动添加的依赖jar包打不进去的情况

    这个问题忙了我一天多的时间,因为太棘手了, 所以记录下来,防止忘记: 问题是这样的,因为项目中用到了自定义的jar包,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行 ...

  2. Maven丨使用IDEA将本地的ojdbc14.Jar包添加到个人仓库中

    在学习 Oracle 数据库的过程中,使用 IntelliJ IDEA 创建了一个 Maven 工程,但是在 pom.xml 中添加 ojdbc14 依赖后,提示如下错误: Could not fin ...

  3. 本地推送jar包到远程maven仓库

    1.windows  cmd切换到maven  bin目录下: 2.将远程仓库地址.用户名.密码配置到maven   conf目录下的settings文件中 ①配置仓库地址 ②配置仓库用户名密码 3. ...

  4. maven打包时本地的jar包打不进去

    默认spring-boot打包插件是不会将本地依赖jar文件打进部署包的,解决方式: 在spring-boot-maven-plugin插件中添加如下配置: <configuration> ...

  5. Maven打包依赖将依赖的Jar包也打进去

    可以在pom.xml中添加如下依赖 注意:一定要写明主类的类全名. <plugin><artifactId>maven-assembly-plugin</artifact ...

  6. 在Maven项目中添加Maven仓库和私服不存在的jar包

    有些jar包(因为不开源/公司内部私有等原因)在Maven仓库.私服中不存在.在Maven项目中添加Maven仓库和私服不存在的jar包呢? 场景: maven项目有时会遇到用非maven仓库或公司内 ...

  7. springboot maven打包运行失败问题debug分析报告——XXX--1.0-SNAPSHOT.jar中没有主清单属性

    问题: 解决方案 1.修改pom.xml文件的build标签为 该标签作用: 添加一个SpringBoot的构建的插件 <build><plugins><plugin&g ...

  8. maven项目打包出现:“未找到主清单属性”或者jar包无法正常运行

    Maven项目打包出现:"未找到主清单属性"或者jar包无法正常运行,按照我的方式就没有问题: 点击setting,找到Artifacts,点击"+",选择JA ...

  9. 反向安装jar包到本地仓库和清除本地仓库中未下载成功的jar包

    反向安装到本地的命令 mvn install:install-file -DgroupId=com.wondersgroup -DartifactId=ssoclient -Dversion=1.2. ...

  10. Idea中Maven报错:Failed to read artifact descriptor for jar包名.jar.jar包版本的解决方式

    Idea中Maven报错:Failed to read artifact descriptor for jar包名.jar.jar包版本的解决方式 故障现象 尝试解决 总结 故障现象 最近这种故障频发 ...

最新文章

  1. C#语言与面向对象技术(4)
  2. 成功解决TypeError: Scalar value for argument 'color' is not numeric
  3. 内存、数据结构之栈和堆的区别?
  4. 思源高拍仪万能驱动_动态展示和教学 良田YL1050AF高拍仪评测
  5. [react] 为什么建议Fragment包裹元素?它的简写是什么?
  6. centos打开mysql数据库_Linux、Centos下操作mysql数据库开启远程访问
  7. Java案例:词频统计
  8. ESXi 6.7 的https服务挂掉处理方法 503 Service Unavailable (Failed to connect to endpoint: [N7Vmacore4Http16Loc
  9. Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
  10. 移动端的人脸检测及去重算法实践
  11. android手机抓包工具需root,android7及以上版本手机抓包
  12. 前端开发:颜色代码速查表【英文颜色、HEX格式、RGB格式】
  13. 卷积神经网络原理与实现过程
  14. MySQL按时间点、时间段查询
  15. 几种你不知道的获取浙A牌照的方法
  16. 我的win10平板维修,重刷系统的经验,windows pe5.0拯救我的平板
  17. slick.js基于jQuery全屏轮播插件
  18. [工业互联-1]:工业互联全局概述
  19. 解决面具magisk刷入模块卡开机问题
  20. [UVM]uvm_mem_mam使用方法

热门文章

  1. 网页加载慢,Initial connection请求偶尔过长
  2. 很好的源码软件列表,有助于学习提高 (ZT)
  3. 终极解码2013春节版在windows7上使用
  4. 欲望、外界、标签、天才、时间、经历、人生目标、后悔、和现实。转自特种兵—AK47
  5. c语言编写的点菜程序,基于C语言实现点菜系统
  6. 《中国迈向新一代人工智能》全文来了。道翰天琼认知智能平台为您揭秘新一代人工智能
  7. [codevs1159]最大全零子矩阵
  8. 为黑客正名——《黑客与画家》读后感
  9. unity 调用Anidroid 相册 选取图片裁剪
  10. 网站制作笔记-bootstrap可视化布局,表单生成工具,快速制作网页原型