這里接上一篇,介紹如何將一個(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目錄下。如下圖。

然后,在當(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)如下。

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

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

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

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