既使用maven编译,又使用lib下的Jar包
来源:互联网 发布:java框架面试题 编辑:程序博客网 时间:2024/05/29 21:17
在项目开发中,项目用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做的事情一点也不少,只是都对用户隐蔽起来了,它只要求你遵循它的约定。
(完)
原文地址:http://blog.csdn.net/catoop/article/details/48489365
- 关于既使用maven编译,又使用lib下的Jar包的问题
- 既使用maven编译,又使用lib下的Jar包
- 既使用maven编译,又使用lib下的Jar包
- 既使用maven编译,又使用lib下的Jar包
- 既使用maven编译,又使用lib下的Jar包
- 既使用maven编译,又使用lib下的Jar包
- maven编译,使用WEB-INFO/lib下的Jar包
- [maven加入aws(com.amazonaws)依赖失败的处理办法][既使用maven又使用lib下的Jar包]
- maven下面怎么使用lib下的Jar包
- Maven项目同时使用lib下的Jar包
- Maven项目同时使用lib下的Jar包
- 面试:----Maven项目同时使用lib下的Jar包
- idea maven项目如何使用lib下得jar包
- idea maven项目如何使用lib下得jar包
- 既使用maven又使用本地Jar包
- MAVEN 项目jar 包不编译到 tomcat 的lib目录下
- json-lib及其使用的jar包
- maven项目和lib下的jar包并驾齐驱
- laravel + memcache 截止到目前为止12小时内的数据
- 高通使用/system/bin/r读取msm8916的gpio配置
- 读取本地文件
- Java代码中常见技术债务处理之Exception
- NYOJ 216 An problem about data
- 既使用maven编译,又使用lib下的Jar包
- Writer 类常用方法
- Python进阶(三十一)-往MySQL数据库里添加数据,update和insert哪个效率高
- Android混淆配置
- ACM刷题之HDU————I Hate It
- VS2013 打包生成安装包文件
- 高桥和低桥 CSU
- Glide的介绍及基本使用
- 二叉树的最大深度