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

12 篇文章 0 订阅

既使用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>
   
   
  • 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 —— 存放项目资源文件,如springhibernate配置文件。

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


(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven 是一个构建工具,用于管理和构建 Java 项目的依赖关系。在 Maven 中,lib 是指项目所需的第三方库文件,而 jar 是指项目本身的可执行文件。 在 Maven 中,可以通过配置来实现 lib 和 jar 分离打包。主要的步骤如下: 1. 在项目的 pom.xml 中,配置 Maven 的插件和属性。 2. 在 pom.xml 中,通过配置 dependencies 标签来管理项目所需的依赖库。将需要的库文件的 groupId、artifactId 和版本号等信息填写在 dependencies 中。 3. 设置打包方式。通过配置 Maven 的插件,将项目编译为一个可执行的 jar 文件,并将所有依赖的库文件打包为一个单独的 lib 目录。 4. 配置 Maven 的插件实现打包。可以使用 Maven 自带的插件如 maven-jar-plugin 和 maven-dependency-plugin 来实现分离打包。 5. 运行 Maven 命令进行项目构建和打包。 在执行以上步骤后,Maven 会根据 pom.xml 中的配置,将项目本身的可执行 jar 文件和所有的依赖库文件分别打包。项目本身的 jar 文件将通过 maven-jar-plugin 插件生成,并存放在 target 目录下。而所有的依赖库文件将通过 maven-dependency-plugin 插件生成,并存放在 target 目录下的 lib 目录中。 通过以上的操作,我们可以实现 lib 和 jar 分离打包。这样,在部署项目时,只需要将项目本身的 jar 文件和 lib 目录一起拷贝到目标环境中即可。这样可以减小发布包的大小,并且便于管理和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值