如何将maven插件将本地jar打包进war中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将maven插件将本地jar打包进war中相关的知识,希望对你有一定的参考价值。

参考技术A war插件有个标签<packagingExcludes>意思是打包时不包含哪些文件,写具体的文件或目录,多个用逗号隔开。
例子:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webappDirectory>WebContent</webappDirectory>
<!-- 必须指定,否则默认会变成在target/war/work 导致被打包进war文件,指定后为target/work -->
<workDirectory>$project.build.directory/work</workDirectory>
<useCache>false</useCache>
<packagingExcludes>WEB-INF/classes/**/*.*,WEB-INF/lib/**/*</packagingExcludes>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
</archive>
</configuration>
</plugin>

Maven引入本地Jar包并打包进War包中

Maven引入本地Jar包并打包进War包中

1.概述

在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来。

2. 拷贝至项目根目录

项目根目录即pom.xml文件所在的同级目录,可以在项目根目录下创建文件夹lib,如下图所示: 
技术分享

这4个Jar包是识别网页编码所需的包。

3. 配置pom.xml,依赖本地Jar

配置Jar的dependency,包括groupId,artifactId,version三个属性,同时还要包含scope和systemPath属性,分别指定Jar包来源于本地文件,和本地文件的所在路径。

<!--  #################################   cpdetector   ####################################  -->
<dependency>
    <groupId>cpdetector</groupId>
    <artifactId>cpdetector</artifactId>
    <version>1.0.10</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/cpdetector_1.0.10.jar</systemPath>
</dependency>

<dependency>
    <groupId>antlr</groupId>
    <artifactId>antlr</artifactId>
    <version>2.7.4</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/antlr-2.7.4.jar</systemPath>
</dependency>

<dependency>
    <groupId>chardet</groupId>
    <artifactId>chardet</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/chardet-1.0.jar</systemPath>
</dependency>

<dependency>
    <groupId>jargs</groupId>
    <artifactId>jargs</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/jargs-1.0.jar</systemPath>
</dependency>

其中,${basedir}是指项目根路径

4. 配置Maven插件将本地Jar打包进War中

在进行以上配置以后,编写代码时已经可以引入Jar包中的class了,但是在打包时,由于scope=system,默认并不会将Jar包打进war包中,所有需要通过插件进行打包。

修改pom.xml文件,在plugins标签下加入下面的代码

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>compile</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory>
                <includeScope>system</includeScope>
            </configuration>
        </execution>
    </executions>
</plugin>

这样,打出来的war包中,就会包含本地引入的jar依赖了。


以上是关于如何将maven插件将本地jar打包进war中的主要内容,如果未能解决你的问题,请参考以下文章

maven笔记-将本地jar包打包进可执行jar中

Exec Maven插件

求教java maven项目打包引入的问题,求大神解答

前端如何打war包

maven 打包时第三方jar 问题

Spring boot如何引入本地jar包?