博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7.如何在Maven项目中引入自己的jar包
阅读量:4561 次
发布时间:2019-06-08

本文共 3848 字,大约阅读时间需要 12 分钟。

 1.一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个内部jar文件,但是这个文件我们又没有开放到maven库中。 我们会将文件放到我们项目中。(以下以java工程为例随便放了个地方):

 2. jar包的引入和使用:

右键项目 -> Build Path -> Configure Build Path ->Libraries ->Add External JARS 

 

这时候我们就可以在工程里使用jar包了 

package com.my.utils;import com.my.util.Book;public class Test {    public static void main(String[] args) {        // TODO Auto-generated method stub.        Book book =new Book("English", 12.5);        System.out.println(book);            }}

但是如果我们不对pom.xml进行特殊配置的话,maven打包是不会自动去引用和编译lib中的jar文件的,会出现类似如下错误

 

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project utils: Compilation failure: Compilation failure:[ERROR] /C:/Users/Administrator/git/utils/src/main/java/com/my/utils/Test.java:[3,19] 程序包com.my.util不存在[ERROR] /C:/Users/Administrator/git/utils/src/main/java/com/my/utils/Test.java:[9,17] 找不到符号[ERROR] 符号:   类 Book[ERROR] 位置: 类 com.my.utils.Test[ERROR] /C:/Users/Administrator/git/utils/src/main/java/com/my/utils/Test.java:[9,32] 找不到符号[ERROR] 符号:   类 Book[ERROR] 位置: 类 com.my.utils.Test

 所以需要我们修改下pom.xml文件。修改maven-compiler-plugin的配置,如下: 

org.apache.maven.plugins
maven-compiler-plugin
3.3
1.8
1.8
UTF-8
${project.basedir}/src/main/resources/lib

 3.如果是web项目,我们会将文件当到我们项目WEB-INF/lib中。

 

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

 

org.apache.maven.plugins
maven-compiler-plugin
3.1
1.7
1.7
UTF-8
${env.JAVA_HOME}/jre/lib/rt.jar
${project.basedir}/src/main/webapp/WEB-INF/lib

 其他配置是我的原来配置,针对lib引用这个问题,只需要增加的是: 

<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>

不过在3.1版本以后maven-compiler-plugin将compilerArguments定为过时了,建议大家按下面的方法写。 

其中表示javac平时用空格隔开的的每一个参数。

org.apache.maven.plugins
maven-compiler-plugin
3.1
1.7
1.7
UTF-8
-verbose
-Xlint:unchecked
-Xlint:deprecation
-bootclasspath
${env.JAVA_HOME}/jre/lib/rt.jar
-extdirs
${project.basedir}/src/main/webapp/WEB-INF/lib

其中${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做的事情一点也不少,只是都对用户隐蔽起来了,它只要求你遵循它的约定。 

2018年8月25日 08:39:39

2019年6月21日 09:38:09

 

转载于:https://www.cnblogs.com/lukelook/p/8673778.html

你可能感兴趣的文章
C/C++关于全局变量和局部变量初始化与不初始化的区别
查看>>
题目1007:奥运排序问题
查看>>
爬虫实例——爬取1元夺宝用户头像(借助谷歌浏览器开发者工具)
查看>>
双目立体匹配经典算法之Semi-Global Matching(SGM)概述:匹配代价计算之Census变换(Census Transform,CT)...
查看>>
制作导航条
查看>>
iOS中的内存管理1
查看>>
23种设计模式全解析
查看>>
Learning Python 008 正则表达式-003 sub()方法
查看>>
Linux的虚拟机拷贝到另外的操作系统时,NAT方式的静态IP无效,一直是获取的DHCP动态地址...
查看>>
要检测两个C文件的代码的抄袭情况
查看>>
PHP-多域名单点登陆方案
查看>>
iOS开发之应用内支付IAP全部流程
查看>>
【web技术】html特效代码(一)
查看>>
SWFObject: 基于Javascript的Flash媒体版本检测与嵌入模块
查看>>
高可用集群搭建
查看>>
Lua学习笔记
查看>>
Redis监控工具,命令和调优
查看>>
【Video Tracking & Detection】系列一之Framework(持续更新)
查看>>
[转] 3D算法
查看>>
游戏UI框架设计(二) : 最简版本设计
查看>>