修复 maven JSTL 1.2.1 依赖性,以便 maven-war-plugin 不会打包冒犯 Tomcat 7 的 JAR

2023-12-11

我的设置:jdk 7、Tomcat 7.0.29、Eclipse Juno(嵌入 m2e[Maven 3.0.4]、m2eclipse-wtp)

我有一个动态网络项目JSTL依赖性:

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>javax.servlet.jsp.jstl</artifactId>
    <version>1.2.1</version>
</dependency>

When I mvn package并在 Tomcat 上部署,我在日志中收到这些非致命消息,这些消息不会阻止我的应用程序部署:

validateJarFile(...\WEB-INF\lib\jsp-api-2.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
validateJarFile(...\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

我检查了一下,是的,有问题的 JAR 正在打包在 WAR 中。我检查依赖关系mvn dependency:tree并得到这个:

[INFO] \- org.glassfish.web:javax.servlet.jsp.jstl:jar:1.2.1:compile
[INFO]    \- javax.servlet.jsp.jstl:jstl-api:jar:1.2:compile
[INFO]       +- javax.servlet:servlet-api:jar:2.5:compile
[INFO]       \- javax.servlet.jsp:jsp-api:jar:2.1:compile

两个 JAR 都显示在compile范围,但如果我检查pom.xml on org.glassfish.web:javax.servlet.jsp.jstl:jar:1.2.1我看到这个:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.2</version>
  <scope>provided</scope>
</dependency>

这表明他们在provided范围,我认为这会将它们排除在包装之外。

问题:

  1. 我如何告诉 WAR 插件不包含这些 JAR?<excludes/>不会削减它,因为这也会将它们从构建路径中删除。
  2. 如果我想根据 Servlet 3.0 规范进行开发但保留此 JSTL 版本怎么办?

弄清楚了,jsp-api 潜入 WEB-INF\lib 作为 jstl 的传递依赖项,修复方法是像这样排除。

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>javax.servlet.jsp.jstl</artifactId>
    <version>${javax.jstl.version}</version>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
        <exclusion>
            <artifactId>jsp-api</artifactId>
            <groupId>javax.servlet.jsp</groupId>
        </exclusion>
    </exclusions>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修复 maven JSTL 1.2.1 依赖性,以便 maven-war-plugin 不会打包冒犯 Tomcat 7 的 JAR 的相关文章

随机推荐

  • 如何从字符串值创建日期对象

    当运行下面的代码时 我得到一个UNPARSABLE DATE EXCEPTION 我该如何解决 package dateWork import java text DateFormat import java text ParseExcep
  • 如何在 android studio 中减小 Apk (.apk) 大小

    当我运行我的应用程序时 apk 大小将为 21 MB 即使我启用了混淆器 我使用 android studio 来运行项目 在项目文件中 src 文件夹大小为 8 62 MB lib 文件夹大小为 400 KB 那么我如何减小 apk 文件
  • 如何制作只允许整数值的文本框?

    我想在我的 wpf 应用程序中创建一个文本框 它只接受整数值 如果有人在 a z 之间输入字符 文本框将拒绝它 因此它不会显示在文本框中 您可以处理 PreviewTextInput 事件 private void TextBox Prev
  • 如何停止 XDocument.Save 写入转义字符

    我正在读取 XML 数据varchar column in a SQL db 转换为 linq to sqlXElement属于一个XDocument 当我执行XDocument Save方法中 XML 被写入文件 但包含转义字符 例如 g
  • mongodb JavaScript 更新

    如何从 JS 更新 mongodb 集合 db collection fruits function err collection collection update id content fruitID content function
  • DBMS_APPLICATION_INFO.SET_CLIENT_INFO 不起作用

    我需要设置 client info 值以区分不同的客户端 这些是我正在运行来测试的脚本 第1步 系统架构 ALTER SYSTEM FLUSH SHARED POOL ALTER SYSTEM FLUSH BUFFER CACHE 第 2
  • 使用 .htaccess 重写文件夹名称

    我想知道是否可以使用 htaccess重写文件夹名称 我的意思是这样的 假设我有一个像这样的网址 www site com folder1 page php 现在我想将网址重写为 例如 www site com apple page php
  • 列表视图中的编辑文本不显示软键盘

    我在列表视图项中使用了edittext 但是即使设置活动android windowSoftInputMode adjustPan 它也无法正常工作 有没有办法解决这个问题 先感谢您 将其添加到您的视图中 android descendan
  • 如何使用 github 令牌或 ssh 密钥设置 Git Bash (msysgit)

    Git 新手 遵循 github 上的所有指示help但简单的命令 如 git pull 和 git push 继续在每次调用时提示我的密码 具体来说 我设置如下 git config global user name 你的名字 git c
  • 按 ID 加载单个视频的 YouTube GData feed

    我正在尝试在 UIWebView 中播放 YouTube 视频 而不是离开我的应用程序 谷歌认为这很容易 http apiblog youtube com 2009 02 youtube apis iphone cool mobile ap
  • 为什么 Google Colab TPU 和我的电脑一样慢?

    由于我有一个很大的数据集 而且我的电脑功率不大 所以我认为在 Google Colab 上使用 TPU 是个好主意 所以 这是我的 TPU 配置 try tpu tf distribute cluster resolver TPUClust
  • 删除自动添加的 xmlns 属性

    我正在尝试执行简单的搜索和突出显示功能Javascript搜索一段文本 这XHTML出现该文本片段的标签也作为参数给出 以获取定位该文本的额外帮助 我正在测试此功能的 XHTML
  • JSF - (转义特殊字符)

    I am trying set 1 2 in outputText
  • 触发器是事务吗?

    我有一些触发器BEFORE INSERT AFTER DELETE在桌子上 如何确保触发器失败时我的查询会回滚 我的意思是我想确定 查询和触发器要么都工作 要么都不起作用 那么触发器是事务吗 来自mysql 文档 对于事务表 语句失败应导致
  • 在 GPS (Ada IDE) 中使用 glib.h 进行编译时出现问题

    我在尝试在 GPS 中编译 Ada 代码时遇到一些麻烦 当我将 GPS 放入包裹中时 它显示丢失 我尝试使用 apt get 安装 确实如此 但错误仍然存 在 接下来我能做什么 我在 x64 Ubuntu 12 04 上运行 GPS 这是我
  • Python Plotly Sankey 图未显示

    想知道是否有人可以帮助找出为什么这个桑基图不起作用 我很确定我遵循了正确的语法和约定来使用该模块 因为这个我一直用头撞桌子 import plotly offline data trace domain x 0 1 y 0 1 height
  • ASP.Net 5 项目中缺少 CloudTable.Execute(以及所有非异步方法)

    使用 Microsoft Visual Studio 2015 RC 如果我创建一个新的 ASP Net Web 应用程序 然后转到 NuGet 并在 CloudTable 类中添加对最新版本的 Azure 存储 Install Packa
  • 是否可以使用 R 在条形图中“分割条形”?

    我旁边有一个条形图 T 我需要的是在每个条形的每个高度 标记 处分割 或画一条水平线 要绘制的样本矩阵 gt head top fem FD1 FE2 FF1 J01 2 2 10 J02 4 0 0 J03 6 2 5 J04 1 6 3
  • SQL“WHERE IN”查询转换为 LINQ

    我正在尝试找到一种方法将这个非常复杂的 SQL 查询转换为 LINQ 但我似乎无法处理所有嵌入的 WHERE IN 子句 有人愿意向我伸出援助之手吗 这是 SQL 代码 不用担心存储过程 它是对行总计的计数 SELECT SELECT pa
  • 修复 maven JSTL 1.2.1 依赖性,以便 maven-war-plugin 不会打包冒犯 Tomcat 7 的 JAR

    我的设置 jdk 7 Tomcat 7 0 29 Eclipse Juno 嵌入 m2e Maven 3 0 4 m2eclipse wtp 我有一个动态网络项目JSTL依赖性