`
lvjun106
  • 浏览: 436160 次
  • 性别: 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做的事情一点也不少,只是都对用户隐蔽起来了,它只要求你遵循它的约定。

分享到:
评论

相关推荐

    mavenjar包

    然后,将这个 JAR 文件复制到你的 Java 安装目录下的 `lib` 或者 `jre/lib/ext` 目录,这样 JAR 文件就可以作为系统扩展被 Java 运行时环境识别。 接下来,如果你的开发环境是 Eclipse,你需要重启 Eclipse,以确保...

    mahout in action源代码maven编译jar包

    《Mahout in Action源代码Maven编译JAR包详解》 Apache Mahout是一个流行的机器学习库,广泛用于数据挖掘和大数据分析。《Mahout in Action》这本书是Mahout技术的权威指南,提供了丰富的示例代码供读者实践。然而...

    lib中的jar lib中的jar包

    `lib`中的`jar`(Java Archive)文件是Java类库的集合,包含了编译后的`.class`文件,这些文件是Java应用程序或库运行的基础。`jar`文件的使用极大地简化了代码的分发和管理,因为它们可以作为一个单独的单元进行...

    tomcat下的lib下的jar包

    标题中的“tomcat下的lib下的jar包”指的是Apache Tomcat服务器中的`lib`目录下的Java Archive (JAR) 文件。Tomcat是一个流行的开源Web应用程序服务器,遵循Java Servlet和JavaServer Pages(JSP)规范。在Tomcat的...

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

    "解决IDEA使用Maven编译正常但是运行项目时却提示很多jar包找不到的问题" IDEA是IntelliJ开发的一款集成开发环境(IDE),Maven是 Apache 软件基金会的一款基于项目对象模型(POM)的项目管理工具。使用IDEA和Maven...

    maven的jar包跟源码包

    - **运行阶段**:在部署和运行应用时,使用的是jar包,因为它们包含了编译后的代码,可以直接由Java虚拟机执行。 - **学习和研究**:对于学习Maven的原理或者分析特定库的实现,源码包是必不可少的。 - **发布和分发...

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

    ### Spring Boot 编译 JAR 包后无法扫描子 JAR 包中的注解解决方案 在使用Spring Boot进行项目开发时,我们经常会遇到模块化的需求,即一个大型项目被拆分成多个子模块来提高可维护性和灵活性。这些子模块可能通过...

    Java+IDEA+maven混淆打包

    本教程将详细介绍如何在IntelliJ IDEA(IDEA)中利用Maven进行混淆打包的步骤,确保整个过程顺利且有效。 首先,我们需要了解Maven,它是一个强大的项目管理和依赖管理工具。通过在`pom.xml`文件中配置,我们可以...

    使用Maven编译Hadoop(2.7.1)

    ### 使用Maven编译Hadoop 2.7.1 的详细步骤及注意事项 #### 一、编译前的准备 **1.1 下载并解压Hadoop源码包** 根据作者gyqiang的说明,要编译的是Apache Hadoop 2.7.1版本,该版本发布于2016年1月4日,是当时...

    各种jar包,maven-spring的

    在IT行业中,jar(Java Archive)包是一种标准的文件格式,用于封装Java类库,包含编译后的Java类、资源文件以及元数据。这些jar包是构建和运行Java应用程序的关键组成部分。在您提供的标题和描述中,我们看到一系列...

    编译运行java带jar包

    在Java编程环境中,有时...总结来说,编译和运行带有JAR包的Java程序涉及编译源代码、设置类路径、创建MANIFEST.MF文件指定主类、打包成JAR并最后运行JAR。通过使用IDE或构建工具,这个过程可以变得更加便捷和高效。

    maven 3 jar 运行文件打包

    “源码”指的是Java项目的源代码,这些代码会被Maven编译并打包。“工具”在这里特指Maven,这是一个强大的构建工具,能够处理项目的构建、依赖管理和打包等任务。 【压缩包子文件的文件名称列表】:“helloWorld”...

    详解IDEA使用Maven项目不能加入本地Jar包的解决方法

    在使用IntelliJ IDEA(IDEA)开发基于Maven的Java Web项目时,有时需要将本地的Jar包添加到项目中,特别是在某些依赖库在线不可用或者需要特定版本的本地库时。本文将详细介绍如何解决IDEA中Maven项目无法加入本地...

    maven jenkins的jar

    在“maven2 用于hudson插件开发的jar”这个场景中,我们可以推断这是关于使用Maven2版本来构建Jenkins(前身Hudson)插件的实践。开发者可能需要在他们的环境中安装特定的Maven插件,如`maven-hpi-plugin`,这个插件...

    myeclipse用maven构建dubbo服务的可执行jar包

    6. **生成的JAR包**:Maven会在项目的`target`目录下生成JAR文件。如果配置正确,这个JAR将是可执行的,你可以通过`java -jar your-jar-file.jar`命令来运行。 注意,`TestTest`可能指的是测试类或者测试用例,对于...

    spring 扫描jar maven 打包

    标题 "spring 扫描jar maven 打包" 涉及的是在Java开发中,如何使用Spring框架和Maven工具来构建并打包一个项目,其中包含Spring对jar包的扫描以及Maven的打包流程。这里我们将深入探讨这两个关键概念。 1. **...

    自定义jar包注入maven仓库使用.doc

    保存`pom.xml`后,Maven会自动从本地仓库加载`iptools.jar`,并在编译和运行时使用它。 总的来说,通过以上步骤,你已经成功地在Windows环境下配置了Maven,将自定义jar包注入到了Maven仓库,并学会了在Spring Boot...

    elasticsearch-6.4.2 IK6.4.2 plugin; maven编译后的,解压即可使用

    通过Maven编译,我们可以避免手动配置环境,简化安装过程,只需解压即可使用,大大提高了部署效率。 在提供的压缩包中,"ik"这个文件可能包含了以下内容: 1. `config` 目录:存放分词器的配置文件,如`IKAnalyzer...

    maven-jar包

    总的来说,"maven-jar包"是一个关于使用Maven构建和管理Java项目的主题,涉及到Maven的基本概念、Eclipse的Maven插件、JAR文件的结构以及Maven插件中与JAR打包相关的配置。对于Java开发者来说,掌握这些知识对于高效...

Global site tag (gtag.js) - Google Analytics