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

原文地址:https://www.cnblogs.com/a8457013/p/8412563.html

时间: 2024-11-06 21:51:18

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

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

这次一个项目用到maven编译,我在本地开发的时候jar包都是放在WEB-INF/lib目录下,通过 BuildPath将jar包导入,然后用MyEclipse中的:maven package命令打成war包,这个war包在tomcat下能正常运行,war包下是有lib下的jar包的. 但是我往服务器上传的是项目源码,用SVN上传,然后服务器上用maven插件编译运行,编译时报错:找不到WEB-INF/lib下jar包.显然maven编译时不会自动加载WEB-INF/lib下的jar包. 项目的

Servlet3.0中WEB-INF\lib下的jar包中的资源可以直接通过浏览器访问

看公司中的一个项目,访问了一个路径: http://127.0.0.1:8080/XXX/v2/jquery-1.8.1.min.js 但是看项目中的web资源并没有这个js文件,甚至连v2这个目录都没得,就觉得奇怪 便看了下web.xml中是否有相应的Filter之类的进行拦截处理,发现也没有,就纳闷了 便想可能会在引用到的jar包里,便打开几个查找下,果然发现了,解惑 目录结构如下: xxx.jar ---com.abc ---META-INF ------MANIFEST.MF -----

IDEA:将WEB-INF\lib下的Jar包添加到项目中

打开Project Structure[可以使用快捷键:Ctrl+Alt+Shift+S] 左侧选中Modules,在Dependecies中,点击右侧"+"号,选择JARS or directories... 选择WEB-INF\lib下的Jar包添加 左侧选中Artifacts,然后点击-项目名:war exploded ,在Avaliable Elements中将刚刚添加的JAR包put into /WEB-LIF/lib 原文地址:https://www.cnblogs.com

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

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

既使用maven又使用lib下的Jar包

maven 使用本地包 lib jar包 依赖一个lib目录 解决方法: # 把本地的lib加入maven编译时的依赖路径 From:http://blog.chinaunix.net/uid-23173926-id-2942789.html 有些项目的jar包不是在maven服务器上能够下载的,那么需要将这样的包放在项目的lib目录下, 不过这样会导致maven打包时找不到包,报错.可以通过下面的配置解决这个问题 <build>         <plugins>        

Maven项目同时使用lib下的Jar包

测试于:Maven 3.0.5, eclipse-jee-indigo-SR2-win32 配置步骤: 在WEB-INF下新建lib目录并加入自己的包: 右键项目 -> Build Path -> Configure Build Paht... 选择新加入的包 配置pom.xml文件 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <a

myeclipse中Web App Libraries无法自动识别lib下的jar包

在项目目录下找到.object文件修改 <natures> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>com.genuitec.eclipse.ast.deploy.core.deploymentnature</nature> <nature>com.genuitec.eclipse.j2eedt.core.webnature</nature

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

maven依赖本地非repository中的jar包 http://www.cnblogs.com/piaolingxue/archive/2011/10/12/2208871.html 博客分类: MAVEN 今天在使用maven编译打包一个web应用的时候,碰到一个问题: 项目在开发是引入了依赖jar包,放在了WEB-INF/lib目录下,并通过buildpath中将web libariary导入. 在eclipse中开发没有问题,但是使用maven编译插件开始便宜总是报找不到WEB-INF

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 注意,分号后面没有空格,否则报错. 需要注意的是,如果