在 Maven 中指定 Apache Tomcat "lib" 文件夹

Specify Apache Tomcat "lib" folder in Maven

Apache Tomcat 9, the JNDI Resources How-To page has a section at the bottom, Adding Custom Resource Factories

要编写实现 JNDI 服务提供者 javax.naming.spi.ObjectFactory 接口的 class,文档说:

You will need to compile this class against a class path that includes all of the JAR files in the $CATALINA_HOME/lib directory.

lib 文件夹包含:

websocket-api.jar
tomcat-jni.jar
tomcat-util-scan.jar
tomcat-util.jar
tomcat-websocket.jar
tomcat-i18n-pt-BR.jar
tomcat-i18n-ru.jar
tomcat-i18n-zh-CN.jar
tomcat-jdbc.jar
tomcat-i18n-ja.jar
tomcat-i18n-ko.jar
tomcat-i18n-cs.jar
tomcat-i18n-de.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
jaspic-api.jar
jsp-api.jar
servlet-api.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
el-api.jar
jasper-el.jar
jasper.jar
catalina-tribes.jar
catalina.jar
ecj-4.12.jar
catalina-ha.jar
catalina-storeconfig.jar
annotations-api.jar
catalina-ant.jar

➥ 在Maven驱动的项目中如何满足这个需求?

我当然不希望将所有这些 jar 捆绑到我的 Web 应用程序的结果 WAR 文件中。

从文档中有点不清楚 真正 需要什么,但一般来说,您的 pom.xml 中会有如下内容:

<dependency>
    <groupId>jndi</groupId>
    <artifactId>jndi</artifactId>
    <version>1.2.1</version>
    <scope>provided</scope>
</dependency>

关键是 provided 范围。这意味着该库是编译所必需的,但不应作为打包的一部分包含在内。换句话说,它是由目标部署环境提供的。

话虽如此,您提供的 link 用于编写 custom 资源工厂。它不会是一个 .war 文件,而是一个 .jar 文件,您可以将其安装到 Tomcat 中以扩展它。那是你想要的吗?如果您只需要执行 JNDI 查找,那么我提供的 XML 块将适用于您的代码。