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