maven引入外部jar(打包修改MANIFEST.MF)


在使用 maven 项目开发时,避免不了使用外部 jar 包,公司没有 maven 私服,小编推荐使用下面方式

小编将网上的零零散散的教程整合了下

用于解决引入外部jar包,在pom.xml配置文件中配置即可

1.将jar包放到项目的指定文件夹下,小编放到 main 的目录下,如下图

 

 

2.在 maven 配置文件中配置 lib 文件夹路径,方便引用里面的 jar 文件(此步骤可省略,如果引用的jar包太多,建议加上此步骤)

 

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
     <resource.path>${project.basedir}/src/main/resources</resource.path>
        <base.lib.path>${project.basedir}/src/main/lib</base.lib.path>
    </properties>

 

3. 在 dependencies 节点下配置需要引用的 jar,如下图(如果有多个,就都配置上即可)

 由于maven打包时候会将 artifactId 和 version 用 - 拼接作为 jar 包名称,所以需要遵守下面的配置规则

        <dependency>
            <groupId>bx05.message</groupId><!--随意,也别太随意-->
            <artifactId>bx05.message</artifactId><!--需要和下面systemPath中的名称一致-->
            <version>0.5.0-SNAPSHOT</version><!--需要和systemPaht中的版本一致-->
            <scope>system</scope> <!--system 需要显式提供依赖的jar以后,maven就不会在repository中查找它-->
            <systemPath>${base.lib.path}/bx05.message-0.5.0-SNAPSHOT.jar</systemPath> <!--jar包具体位置-->
        </dependency>

 

4.需要配置 maven 打包时将本地 jar 一起打入 lib 中

 

            <!-- 将所依赖的第三方jar包打入target下的lib目录 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${base.lib.path}</outputDirectory>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

 

5.配置 maven 打 jar 时修改清单文件,将本地 jar 写到 MANIFEST.MF 文件中,这样运行打包好的 jar 时就不会包找不到类的异常了(注意,多个 jar 的话,需要用空格隔开)

 

 

 

 

            <!-- 打jar包的main方法配置 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.beyond.AutonaviApplication</mainClass>
                        </manifest>
                        <!-- 给清单文件添加键值对(配置文件外置) -->
                        <manifestEntries>
                            <Class-Path>config/ lib/bx05-0.5.0-SNAPSHOT.jar lib/bx05.message-0.5.0-SNAPSHOT.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!--打包的时候忽略classes 路径下的配置文件 -->
                    <excludes>
                        <exclude>*.properties</exclude>
                        <exclude>*.xml</exclude>
                        <exclude>*.txt</exclude>
                        <exclude>templates/**</exclude>
                    </excludes>
                </configuration>
            </plugin>

下图为打好包的 MANIFEST.MF 文件内容

 

 

小编的项目打包方式是源码和 jar 包分离的方式,如下图(如果使用的是将 lib 下的 jar 全部打入 执行 jar 中,还请另行百度)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM