`
lvjun106
  • 浏览: 429265 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题

    主要介绍了解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题,本文分多种情形给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    springboot编译jar包后无法扫描子jar包中的注解解决方法

    springboot 项目编译后无法扫描加载到子jar包中的注解解决方法

    Maven2使用项目开发规范说明.doc

    2.7. 使用maven编译项目代码注意事项 17 3. 构建项目规范说明 18 3.1. 项目目录结构 18 3.2. 设置groupId, artifactId规范 20 3.3. 在Eclipse要引用的jar包设置规范 20 3.4. MIA_LIB维护更新规范 22 4. 参考资料链接...

    Spring boot打包jar分离lib和resources方法实例

    主要介绍了Spring boot打包jar分离lib和resources方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    使用xjar 对Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译

    目录 1 Xjar 介绍 2 如何使用 xjar v2.06 2.1 导入pomx (可以的话直接看3) 不行接着往下 ...基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免源码泄露或反编译。 功能

    maven的优缺点 项目

    Pom:文件夹,jar和war文件,mavenProject:一个项目,可以放jar和war包,通过pom,一般新创建的maven Project是POM 3.4.创建一个Maven Model 最外面的项目是MavenProject,其它的全部是Maven Model 3.4.1.创建JAR 目录...

    Maven学习资料个人总结

    Apache Maven一个潜在的基于java的apache ant的构建工具的替代者...这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

    Think in Java源码Maven工程(内附原始代码)

    编译Think in java 源代码 1.下载源码,按要求安装编译...4.修改pom.xml引入且少的jar包(xom.jar、swt.jar、javassit.jar) 5.新建lib目录,将tools.jar、javaw.jar拷贝至lib目录,工程内引入缺少的jar包 6.排错、编译

    适用于windows-x64位的maven压缩包

    boot目录中有一个.jar包,他是maven自己使用的jar包 conf目录为配置目录,你可以在里面进行maven的配置 lib包存储着maven的依赖,因为maven自己也是java构建的 复制当前的目录(注:最好不要有中文) 右键此电脑--&gt;...

    JMeterAMQP.jar

    这是自己本机编译的JMeterAMQP.jar,放置位置为 jmeter安装目录中的lib/ext中,可用于测试rabbitmq等 以下为自己的编译方法: 源码地址:https://github.com/jlavallee/JMeter-Rabbit-AMQP 环境需求:jdk 1.8,...

    liunx gdal编译包.rar

    资源是liunx环境下已编译好的gdal jar包和...使用时(针对Java项目),将jar导入项目(也可以使用maven导入依赖),将so文件放入到java.library.path目录下,一般是usr/lib等,代码使用时System.loadLibrary()加载即可。

    maven 2.1.0

    1. 在项目根目录下,写一个ant文件,把常用命令列出来 ...arg line="/c maven update-lib"/&gt; &lt;/exec&gt; &lt;/target&gt; &lt;/project&gt; 2. 使用eclipse的ant view,可以看到并执行上面的命令

    xjar-maven-plugin:XJar-Maven-Plugin是对XJar的一个Maven插件封装,实现可通过Maven命令或绑定在Maven的生命周期之中执行,以更便捷的方式集成XJar

    XJar是基于对JAR包内部资源的加密以及扩展ClassLoader来构建的一套程序加密启动,动态解密运行的方案,避免初始化或反向编译,支持Spring Boot JAR安全加密运行,同时支持其原生JAR。更多文档请点击: 环境依赖 ...

    opc_openscada

    ​ 为了方便使用,项目中依赖但是MAVEN远程库中没有的的jar包,在项目中会通过mvn指令把第三方的jar包打包到本地库中,然后和其他的jar库使用相同的步骤使用. NOTICE: 首先应该确保机器上已经安装并配置好了 maven ...

    ClassFinal字节码加密工具-其他

    支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。环境依赖:JDK 1.8 +本工具使用AES算法加密class文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。密码一旦忘记,项目不可启动且无法恢复,请牢记密码。...

    xmljava系统源码-classfinal:Java类加密工具

    xml java系统源码 ClassFinal 介绍 ClassFinal是一款java class文件安全加密工具,支持直接加密jar包或war包,无需修改任何项目代码,兼容spring-framework;...支持加密WEB-INF/lib或BOOT-INF/lib下的

    memcached session manager 1.9.6 适用于 tomcat 8 各版本

    memcached session manager 1.9.6 适用于 tomcat 8 各版本 memcached session manager原...各个序列化方式所需要的包我已经打包好了 ,直接拷贝对应包到tomcat8的lib文件夹下即可 有问题邮件联系吧 99107247@qq.com

    单点登录sso-shiro-cas-maven

    其中QueryDatabaseAuthenticationHandler这个类是自定义构建的,在cas/WEB-INF/lib/cas-jdbc-1.0.0.jar里面,有兴趣的同学可以发编译看下,关于几个属性的说明 1. dataSource: 数据源,配置MySQL的连接信息 2. ...

    spring boot集成sigar极简入门实例.zip

    项目描述 spring boot集成sigar极简入门实例 获取服务器CPU、内存、网卡、计算机等相关信息 ...项目采用maven管理jar包版本依赖,编译项目自动下载相关版本jar包 资源包文件(可选) 位于工程目录lib文件夹下

    spring-struts2-mybatis-sqlite简单工程

    spring-struts2-mybatis-sqlite简单工程, 1.里面包含编译好的war,可以直接部署到maven...2.可以解压war里面有lib包是使用到jar包, 3.工程是maven工程。如果你有maven服务器,可以直接运行。 4.有问题可以留言联系我。

Global site tag (gtag.js) - Google Analytics