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

标签 java maven tomcat servlets catalina

Apache Tomcat 9、JNDI Resources How-To页面底部有一个部分,Adding Custom Resource Factories .

要编写一个实现 JNDI 服务提供者 javax.naming.spi.ObjectFactory 接口(interface)的类,文档说:

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>

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

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

关于java - 在 Maven 中指定 Apache Tomcat "lib"文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58358592/

相关文章:

java - 无法将 Drools 6.x Workbench 部署到 Windows 中的 tomcat - 没有使用 uniqueName 'jdbc/jbpm' 注册的资源

java - 使用 Jersey 的 Java Web 服务

java - 哪些库支持 Java 6 ServiceLoader 工具(META-INF/services)?

java - Intent 不提取额外的

maven - Liquibase - 生成脚本而不将变更集应用于数据库

java - 如何在没有Eclipse的情况下运行Spring Boot应用程序?

java - 使用 JNDI 的 Tomcat 上的 IBM IMS 连接 - JAVA

java - 创建的线程实例是驻留在堆中还是其他地方?

java - Spring JPA 查询 findByNameAndType 返回 null

maven - leiningen项目中使用maven的 "LATEST"关键字