Maven pom.xml 添加本地jar包依賴以及打包方法

Maven項目打包時,若是遇到須要添加本地jar包依賴的時候,能夠選擇兩種方法:java

1. 安裝到本地倉庫spring

第一種方法比較常規,適用於須要添加的jar包也是由maven項目導出,含有pom文件的時候。只須要將jar包安裝到本地maven倉庫下,而後添加依賴便可。apache

(1)安裝到本地倉庫,執行如下命令(其中的-Dfile/-DgroupId/-DartifactId/-Dversion項根據pom文件內容填寫):maven

mvn install:install-file -Dfile=xxxxx.jar -DgroupId=xxx.xxx.xxx -DartifactId=xxxxx -Dversion=1.0.0 -Dpackaging=jar

(2)安裝以後能夠在本地倉庫中找到對應的jar包。而後將對應的依賴信息插入到工程的pom文件便可:spring-boot

<dependency>
    <groupId>xxx.xxx.xxx</groupId>
    <artifactId>xxxxx</artifactId>
    <version>1.0.0</version>
</dependency>

 

2. dependency中指定scope="system"和本地jar包路徑ui

這種方法適用於其餘方式導出的jar包,jar包中不含有pom信息,從而沒法安裝進本地倉庫的狀況。作法是:先配置本地jar包依賴,而後在build時將設置將jar包導出,同時配置manifest。spa

(1)配置本地jar包依賴(systemPath指向本地jar包路徑):插件

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/xxx.jar</systemPath>
</dependency>

(2)在<build>的spring-boot-maven-plugin中設置將本地jar包導出到項目最終的依賴庫中:code

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <includeSystemScope>true</includeSystemScope>
    </configuration>
</plugin>

(3)若是項目使用maven-jar-plugin插件打包的話,還須要在manifectEntries中添加對應的jar包信息;不然雖然jar包導出了,可是項目生成的MANIFEST.MF文件中沒有對應的依賴信息,也會致使運行時找不到對應的class。blog

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>XXXX</mainClass>
            </manifest>
            <manifestEntries>
                <Class-Path>./ lib/xxxxx.jar</Class-Path>
            </manifestEntries>
        </archive>
        <outputDirectory>
            ${project.build.directory}/XXXXX
        </outputDirectory>
    </configuration>
</plugin>

(4)最後附上一個項目完整的<build>配置(該配置能夠將最終生成的jar包和依賴庫、配置文件分開)。

<build>
    <finalName>XXXXX</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${project.build.directory}/XXXXX</targetPath>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>

    <testSourceDirectory>src/test/java</testSourceDirectory>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
    </testResources>

    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.directory}XXXXX/lib
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>xxx.xxx.XXXXX</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>./ lib/xxxxx.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                    <outputDirectory>
                        ${project.build.directory}/XXXXX
                    </outputDirectory>
                </configuration>
            </plugin>
    </plugins>
</build>
相關文章
相關標籤/搜索