You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Maven将lib目录下的jar包引入主jar包实现轻量化

步骤1:调整依赖作用域

将你需要外置的Hikari、H2等依赖的scope设置为provided,Maven打包时就不会将这些依赖打入主jar包,实现主包轻量化。配置示例如下:

<dependencies>
    <!-- Hikari连接池 -->
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>替换为你的实际使用版本</version>
        <scope>provided</scope>
    </dependency>
    <!-- H2数据库 -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>替换为你的实际使用版本</version>
        <scope>provided</scope>
    </dependency>
    <!-- 其余需要内置在主jar的依赖无需修改scope配置 -->
</dependencies>
步骤2:配置主jar包的类路径与启动类

使用maven-jar-plugin插件配置主jar的启动类,同时自动将外置依赖的类路径前缀设置为lib/,对应你存放外置jar的目录:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <!-- 替换为你项目主启动类的全限定名,例如com.example.Application -->
                        <mainClass>你的主启动类全限定名</mainClass>
                        <addClasspath>true</addClasspath>
                        <!-- 指定外置依赖的存放目录前缀 -->
                        <classpathPrefix>lib/</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
步骤3:自动导出外置依赖(可选)

如果不想手动收集外置jar包,可以新增maven-dependency-plugin插件,执行打包命令时自动将所有provided作用域的依赖导出到lib目录:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>copy-provided-deps</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                <includeScope>provided</includeScope>
            </configuration>
        </execution>
    </executions>
</plugin>
步骤4:运行主jar包

完成配置后执行mvn package打包,将target目录下生成的主jar包和lib目录放在同一级目录,结构如下:

.
├── Main.jar
└── lib
    ├── HikariCP-xxx.jar
    └── h2-xxx.jar

直接执行以下命令即可正常运行:

  • Linux/macOS系统:java -jar Main.jar
  • 如需手动指定类路径运行:
    • Linux/macOS:java -cp "Main.jar:lib/*" 你的主启动类全限定名
    • Windows:java -cp "Main.jar;lib/*" 你的主启动类全限定名

注意:lib目录下存放的外置jar版本需要和pom.xml中依赖的版本完全一致,避免出现类找不到或版本冲突问题。

内容的提问来源于stack exchange,提问作者korallo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 07:36:03