AdSense

網頁

2025/6/30

Maven Web 加入專案目錄內的函式庫jar依賴

Maven Web專案中加入專案目錄中的函式庫jar的方式如下。


例如在專案根目錄下的lib目錄中有個banana-1.0.0.jar

src/
    main/
        java/
        resources/
        webapp/
            WEB-INF/
                web.xml
lib/
    banana-1.0.0.jar
pom.xml

pom.xml中加入dependency及設定maven-war-pluginwebResources將專案目錄中的jar加入為建構war時的外部資源如下。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <dependencies>
        <dependency>
            <groupId>com.abc</groupId>
            <artifactId>banana</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/banana-1.0.0.jar</systemPath>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.4.0</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>${project.basedir}/lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                        </resource>
                    </webResources>
                </configuration>
        </plugins>
    </build>

</project>


說明

${project.baseDir}是目前專案所在目錄的Maven變數。

下面的意思是把在建構時將專案所在系統下指定路徑中的檔案加入為依賴,稱為System Dependencies<scope>system</scope>是指在編譯時從系統中尋找而非從repository下載,<systemPath>為檔案在系統中的路徑位置。注意system scope已經deprecated了。

<dependency>
    <groupId>com.abc</groupId>
    <artifactId>banana</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/banana-1.0.0.jar</systemPath>
</dependency>

下面的意思是把專案目錄下lib目錄中的資源在建構時加入到war中的WEB-INF/lib目錄,如此war才可以參考裡面的jar檔。

<webResources>
    <resource>
        <directory>${project.basedir}/lib</directory>
        <targetPath>WEB-INF/lib</targetPath>
    </resource>
</webResources>


沒有留言:

AdSense