既使用maven编译,又使用lib下的Jar包

在项目开发中,项目用maven管理,是一个maven项目。 
一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个内部jar文件,但是这个文件我们又没有开放到maven库中。 
我们会将文件当到我们项目WEB-INF/lib中。 
如果我们不对pom.xml进行特殊配置的话,maven打包是不会自动去引用和编译lib中的jar文件的,所以需要我们修改下pom.xml文件。

修改maven-compiler-plugin的配置,如下:

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding><compilerArguments><verbose /><bootclasspath>${env.JAVA_HOME}/jre/lib/rt.jar</bootclasspath><extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs></compilerArguments></configuration>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

其他配置是我的原来配置,针对lib引用这个问题,只需要增加的是: 
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>

不过在3.1版本以后maven-compiler-plugin将compilerArguments定为过时了,建议大家按下面的方法写。 
其中表示javac平时用空格隔开的的每一个参数。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding><compilerArgs> <arg>-verbose</arg><arg>-Xlint:unchecked</arg><arg>-Xlint:deprecation</arg><arg>-bootclasspath</arg><arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg><arg>-extdirs</arg> <arg>${project.basedir}/src/main/webapp/WEB-INF/lib</arg></compilerArgs> </configuration>
</plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

其中${project.basedir}一定要写,不然会出现“在windows”下可以正常编译,在Linux服务器上就“有可能”出现编译找不到jar包的错误。

另外科普一下,maven的目录约定: 
pom.xml所在的目录应为项目的根目录,假设该目录为${proj-dir},那么Maven有以下假设:

${proj-dir}/src/main/Java —— 存放项目的.java文件。

${proj-dir}/src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件。

${proj-dir}/src/test/jave —— 存放所有测试.java文件,如JUnit测试类。

${proj-dir}/src/test/resources —— 测试资源文件。

${proj-dir}/target —— 项目输出位置。

运行一条mvn clean package命令,Maven会帮你清除target目录,重新建一个空的,编译src/main/java类至target/classes,复制src/main/resources的文件至target/classes,编译src/test/java至target/test-classes,复制src/test/resources的文件至target/test-classes;然后运行所有测试;测试通过后,使用jar命令打包,存储于target目录。Maven做的事情一点也不少,只是都对用户隐蔽起来了,它只要求你遵循它的约定。


(完)

既使用maven编译,又使用lib下的Jar包相关推荐

  1. 解决URL存在特殊符号、异步线程池配置、动态加载lib下所有jar包

    一.解决URL存在特殊符号|{}?&.URL中包含%2F.URL中包含%5C import lombok.extern.slf4j.Slf4j; import org.springframew ...

  2. 智能一代云平台(四十):Maven项目如何将lib下依赖的包打印在manifest文件中

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 今天突然发现在Pom文件中进行相关的设置,可以将自己所依赖的jar包在Manifest ...

  3. Maven编译打包成可运行的Jar包

    2019独角兽企业重金招聘Python工程师标准>>> 刚接触Maven项目,以前都是普通的Java Project,少了啥就往lib文件夹下面加依赖的Jar包.工作中使用到Mave ...

  4. 解决maven打包 无法加载本地lib/下的jar包问题(程序包XXX不存在)

    在进行抖音支付时,引用了tt_pay-1.0.5.jar,在maven打包时,报XXX不存在 一.目录结构 二.解决方法 <build><finalName>xiaoya-ap ...

  5. maven依赖本地非repository中的jar包-依赖jar包放在WEB-INF/lib等目录下的情况客户端编译出错的处理...

    2019独角兽企业重金招聘Python工程师标准>>> maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/a ...

  6. Windows/Linux下引用jar包,并用javac/java编译运行

    Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...

  7. idea 如何引入WEB-INF下lib中的jar包

    如图:导入的项目中lib中存在jar包 选择Project Structure 选择Modules 并选中Dependencies,点击"+"号 选择JARs 选择jar包 添加完 ...

  8. eclipse手动pom本地包_(转)如何在maven的pom.xml中添加本地jar包

    1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下所示: 1 groupId 2 artifactId 3 version 4 jar包的依赖 如果要将 ...

  9. (转)如何在maven的pom.xml中添加本地jar包

    转载自: https://www.cnblogs.com/lixuwu/p/5855031.html 1 maven本地仓库认识 maven本地仓库中的jar目录一般分为三层:图中的1 2 3分别如下 ...

最新文章

  1. 自制javascript库
  2. RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践
  3. MFC对话框绘制灰度直方图
  4. 理想汽车,重新定义“召回”
  5. 不会编程也能搞定一键打开文件
  6. PHP与mysql的基础知识
  7. nvidia-smi 显示无进程,但GPU显存被占用
  8. 字节跳动回应抖音上市;苹果公司:全球多个国家的 App 价格将上涨;GDB 10.1 发布|极客头条
  9. C语言求解根号2的近似值
  10. Java字符流拷贝/复制文本文件,字节流拷贝文本文件乱码,很经典简便
  11. 《计算机网络教程》(微课版 第五版)第一章 概述 课后习题及答案
  12. linux安装steam提示没有32位,12.10- 试图安装 Steam 错误: 你缺少以下 32位库,并且 Steam 可能无法运行...
  13. liu系统的混沌特性及其matlab仿真,Liu系统的混沌特性及其Matlab仿真
  14. mysql 计算农历_干支方法结算(农历算法)
  15. 登录企业邮箱imap服务器,企业邮箱IMAP客户端的同步设置
  16. 2021-08-07 解决安装MacTeX后界面显示法语问题
  17. python 答题插件_大话西游答题器 Python版本
  18. 倍福PLC:win7专业版系统安装TwinCAT3后图标灰色,报错0x426 starting TwinCAT system
  19. 幂函数在计算机中怎么下,对数指数幂函数模拟计算机.doc
  20. 全国计算机扥及考试c语言教程,【计算机】第1章 C语言绪论.ppt

热门文章

  1. Go 知识点(05)— 类型别名与类型定义
  2. pycharm配置远程调试docker
  3. 视频处理单元Video Processing Unit
  4. 跟踪自主车辆软件平台
  5. 高级数据结构讲解与案例分析
  6. [JavaScript] 探索JS中的函数秘密
  7. api.php t.cn,PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
  8. python时区转换_在python 不同时区之间的差值与转换方法
  9. nginx检查配置文件语法是否正常,需要检查主配置文件
  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:禁用按钮