既使用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>

其他配置是我的原来配置,针对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>

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



(完)

时间: 2025-01-31 05:50:27

既使用maven编译,又使用lib下的Jar包的相关文章

maven项目,配置后为什么Maven Dependencies没有对应lib下的jar包

问题描述 maven项目,配置后为什么Maven Dependencies没有对应lib下的jar包 进行上面这个操作后, 没有出现Maven Dependencies,对应的lib,以前也是偶尔能成功 到底是怎么 回事呢 解决方案 Maven项目配置第三方jar包maven项目添加jar包maven项目添加jar包 解决方案二: http://zhidao.baidu.com/link?url=Kv2bSAH9rnrWtPznX6FUVBa9I9GgHMUnZGmfcE0xlNvYIUY9A_

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

Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下.   1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, java源文件放在D:/test/src目录下,名字为t2.java. 编译: javac -cp d:/test/t1.jar d:/test/src/t2.java 运行: java -cp d:/test/t1.jar;d:/test/src t2 注意,分号后面没有空格,否则报错.   需要注意的

eclipse-如何能在Eclipse的web-info下看到lib里的jar包?

问题描述 如何能在Eclipse的web-info下看到lib里的jar包? 在工程的web app libraries下能看到jar包,在web-info的lib文件夹下也能找到这些jar包,但是在Eclipse的lib目录下就是不显示这些jar包,我在filters里也没有过滤jar包,为什么会显示不出来呢?我是想把lib下的包删掉一些,因为和外部引用的有冲突,但是在build path里是没法删除这些包的 解决方案 WEB-INFO/lib & build path 的jar包问题WEB-

maven项目部署在linux上的jar包问题

问题描述 maven项目部署在linux上的jar包问题 昨天吧写好的程序部署在linux上准备测试.发现找不到hibernate3.0.6.jar 看后发现, 这个jar包是引用在本地磁盘上的一个jar包.如:G:xxxx/xxxx/xx/hibernateXX.jar ,但是maven的jar包也已经打包到lib下放到程序包的同级目录下.可能linux上没有盘符, 而maven里找jar包的是通过pom文件找jar包的.pom文件里面写的是G:xxxxxxx.hibernateXX.jar

java-在myeclipse中的项目下导入jar包,不显示

问题描述 在myeclipse中的项目下导入jar包,不显示 我是在myeclipse中的项目下建了一个lib文件夹,然后把jar包复制进入,如果jar包是zip压缩格式的可以显示,但是导入后是错误的,而jar格式的不显示,没法导入,如果在电脑本地的lib文件夹下是有包的,请问这什么原因怎么修改 解决方案 你导入jar包为什么不用build path? 解决方案二: 是不是你MyEclipse设置的问题;如果不是你关闭项目重启,或者关掉myeclipse重启看看 解决方案三: 1.刷新项目 2.

java-在IDEA中配置好maven后,就会自动导入jar包么?

问题描述 在IDEA中配置好maven后,就会自动导入jar包么? 本地安装好maven后,在idea里面配置好,以后新建maven项目就不用导jar包了么? 这么智能么?怎么实现的? 求大神解答 解决方案 所谓的智能并不是不用导入jar包.而是帮你解决了jar直接的依赖,冲突问题.从maven中央仓库中copy对应的代码就可以自动下载jar,缺陷是要网络才行. 中央仓库地址:http://mvnrepository.com/ 解决方案二: 根据 你pom.xml 中的 配置会去maven 仓库

maven web工程中调用依赖的jar包内的自定义XX.xml文件 报FileNotFoundException异常

问题描述 现有一mavenweb工程,在web工程中依赖2个maven普通工程,用的是JBoss部署有A,B两个普通的maven工程,C是mavenweb工程.其中A工程中有个自定义的Data.xml文件.在maven工程B中,我依赖A工程(A工程打成jar包后,在B工程中的pom中引用了,A工程中放的是property文件和xml文件等resource文件),在B工程中有个解析A工程下的Data.xml的工具类,用getResource("/Data.xml")再newFile(fi

Maven项目怎样引用其他项目/或者jar包

惯例: 我是温浩然: 现在越来越多的项目都用Maven进行管理jar包,我这里说的是,Maven怎样引用本地Maven项目. 一个项目从SVN上下载下来,先在本地删除(只是在工作环境中删除,不要删除文件),在通过eclipse导入Maven项目,然后,右键项目,选择Maven,选择Update Project. 一个项目的JAR包就从Maven服务器上下载到本地了. 我对Maven的理解. Maven就是对jar包进行管理,也可以说是对项目进行管理.所有的Maven项目,都用一个pom.xml文

搭建一个maven项目,急需这两个jar包,请求给予!!小白再问下这两个jar包的作用是神马

问题描述 <dependency><groupId>ibm</groupId><artifactId>com.ibm.mqjms</artifactId><version>1.3.1_01</version><scope>provided</scope></dependency><dependency><groupId>ibm</groupId><