J2EE模塊中的jsp資源的maven打包和引用

這里接上一篇,介紹如何將一個(gè)j2ee的Maven模塊中的資源,包括jsp,打包到一個(gè)jar包中,提供給其他項(xiàng)目引用。

1、被依賴的項(xiàng)目

1.1 代碼修改

被依賴的項(xiàng)目,采用上一篇的module,新建幾個(gè)測試的jsp,如下。
child/childPub.jsp

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Hello World!</title>  
</head>  
<%  
    String tmpChildPubStr = "Hello World!";  
%>  
<body>  
    <h2>child/childPub.jsp: <%=tmpChildPubStr%></h2>  
</body>  
</html>

indexPub.jsp

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Hello World!</title>  
</head>  
<%  
    String tmpPubStr = "Hello World!";  
%>  
<body>  
    <h2>indexPub.jsp: <%=tmpPubStr%></h2>  
</body>  
</html>

修改pom.xml文件,如下:

<?xml version="1.0" encoding="UTF-8"?>  
<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/xsd/maven-4.0.0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
  
    <groupId>com.lfqy.j2ee</groupId>  
    <artifactId>mvn-tmct</artifactId>  
    <version>1.0-SNAPSHOT</version>  
  
    <dependencies>        <dependency>            <groupId>commons-lang</groupId>  
            <artifactId>commons-lang</artifactId>  
            <version>2.6</version>  
        </dependency>    </dependencies>    <build>    <resources>        <resource>            <directory>src/main/webapp</directory>  
            <excludes>                <exclude>WEB-INF/**</exclude>  
            </excludes>            <targetPath>META-INF/resources</targetPath>  
            <filtering>false</filtering>  
        </resource>    </resources>    </build>  
</project>

從這個(gè)配置,不難看出,實(shí)際的含義是將src/main/webapp目錄下的資源打包到META-INF/resources目錄下,但是不包含WEB-INF子目錄下的內(nèi)容。

1.2 Maven編譯和install

到這里,點(diǎn)擊IDEA編輯器的右側(cè)Maven側(cè)邊欄,選中當(dāng)前的module,先執(zhí)行clean,再執(zhí)行compile之后,可以看出src/main/webapp目錄下的資源已經(jīng)按照我們預(yù)期設(shè)定的,打包到了target目錄下。如下圖。

image.png

然后,在當(dāng)前module的根目錄(pom.xml文件所在的目錄)下,執(zhí)行mvn install命令,如下。

$ mvn install
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.lfqy.j2ee:mvn-tmct >-----------------------
[INFO] Building mvn-tmct 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ mvn-tmct ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 6 resources to META-INF/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ mvn-tmct ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ mvn-tmct ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /Users/chengxia/Developer/TrialProject/mvn-tmct/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mvn-tmct ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ mvn-tmct ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ mvn-tmct ---
[INFO] Building jar: /Users/chengxia/Developer/TrialProject/mvn-tmct/target/mvn-tmct-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ mvn-tmct ---
[INFO] Installing /Users/chengxia/Developer/TrialProject/mvn-tmct/target/mvn-tmct-1.0-SNAPSHOT.jar to /Users/chengxia/Developer/Java/tools/apache-maven-3.6.0/repository/com/lfqy/j2ee/mvn-tmct/1.0-SNAPSHOT/mvn-tmct-1.0-SNAPSHOT.jar
[INFO] Installing /Users/chengxia/Developer/TrialProject/mvn-tmct/pom.xml to /Users/chengxia/Developer/Java/tools/apache-maven-3.6.0/repository/com/lfqy/j2ee/mvn-tmct/1.0-SNAPSHOT/mvn-tmct-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.221 s
[INFO] Finished at: 2022-11-27T01:18:21+08:00
[INFO] ------------------------------------------------------------------------
$ 

2、依賴的項(xiàng)目

2.1 代碼修改

參照前面的步驟創(chuàng)建一個(gè)基于Maven的J2EE項(xiàng)目mvn-tmct-parent。
pom.xml

<?xml version="1.0" encoding="UTF-8"?>  
<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/xsd/maven-4.0.0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
  
    <groupId>com.lfqy.j2ee</groupId>  
    <artifactId>mvn-tmct-parent</artifactId>  
    <version>1.0-SNAPSHOT</version>  
  
    <dependencies>        <dependency>            <groupId>com.lfqy.j2ee</groupId>  
            <artifactId>mvn-tmct</artifactId>  
            <version>1.0-SNAPSHOT</version>  
        </dependency>    </dependencies></project>

新建一個(gè)main.jsp,用于測試項(xiàng)目是否正常。

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Hello World!</title>  
</head>  
<%  
    String tmpStr = "Hello World!";  
%>  
<body>  
<h2>main.jsp: <%=tmpStr%></h2>  
</body>  
</html>

新建一個(gè)mainP.jsp,用于測試是否可以引用Maven依賴jar包resource根目錄下的jsp是否正常。

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Hello World!</title>  
</head>  
<%  
    String tmpMainPStr = "Hello World!";  
%>  
<body>  
<h2>mainP.jsp: <%=tmpMainPStr%></h2>  
<h2>child page:</h2>  
<%@include file="indexPub.jsp" %>  
</body>  
</html>

新建一個(gè)mainPP.jsp,用于測試是否可以引用Maven依賴jar包resource目錄子目錄下的jsp是否正常。

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Hello World!</title>  
</head>  
<%  
    String tmpMainPPStr = "Hello World!";  
%>  
<body>  
<h2>mainPP.jsp: <%=tmpMainPPStr%></h2>  
<h2>child page:</h2>  
<%@include file="child/childPub.jsp" %>  
</body>  
</html>

2.2 編譯和啟動(dòng)

在當(dāng)前module的根目錄下執(zhí)行如下命令,用于拷貝依賴到lib目錄下。

mvn-tmct-parent chengxia$ mvn dependency:copy-dependencies -DoutputDirectory=/Users/chengxia/Developer/TrialProject/mvn-tmct-parent/src/main/webapp/WEB-INF/lib -DincludeScope=runtime
[INFO] Scanning for projects...
[INFO] 
[INFO] -------------------< com.lfqy.j2ee:mvn-tmct-parent >--------------------
[INFO] Building mvn-tmct-parent 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:copy-dependencies (default-cli) @ mvn-tmct-parent ---
[INFO] Copying commons-lang-2.6.jar to /Users/chengxia/Developer/TrialProject/mvn-tmct-parent/src/main/webapp/WEB-INF/lib/commons-lang-2.6.jar
[INFO] Copying mvn-tmct-1.0-SNAPSHOT.jar to /Users/chengxia/Developer/TrialProject/mvn-tmct-parent/src/main/webapp/WEB-INF/lib/mvn-tmct-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.765 s
[INFO] Finished at: 2022-11-27T01:40:14+08:00
[INFO] ------------------------------------------------------------------------
mvn-tmct-parent chengxia$ 

到這里,目錄結(jié)構(gòu)如下。


image.png

項(xiàng)目啟動(dòng)后,瀏覽器中訪問http://localhost:8080/main.jsp,如下。

image.png

訪問http://localhost:8080/mainP.jsp,如下。

image.png

訪問http://localhost:8080/mainPP.jsp,如下。

image.png

到這里,可以看出,maven依賴中的jsp可以被正常引用。
實(shí)際上,也可以直接訪問maven依賴中的jsp。瀏覽器中訪問http://localhost:8080/indexJava.jsp,如下。

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容