Java JSTL版本1.2已声明,但1.1已从Maven存储库交付

Java JSTL版本1.2已声明,但1.1已从Maven存储库交付,java,maven-2,jstl,Java,Maven 2,Jstl,我正在寻找一种从Maven存储库获取JSTL 1.2实现JAR的简单方法,这听起来很简单,但事实证明非常困难 我尝试了以下软件包: javax.servlet:jstl:1.2 通过 javax.servlet.jsp.jstl:jstl:1.2 通过 这两个工件都应该包含JSTL1.2实现。但是,当我下载JAR并打开其中一个JAR中的文件/META-INF/c.tld(其内容相同)时,标题显示: <taglib xmlns="http://java.sun.com/xml/ns/java

我正在寻找一种从Maven存储库获取JSTL 1.2实现JAR的简单方法,这听起来很简单,但事实证明非常困难

我尝试了以下软件包:

javax.servlet:jstl:1.2

通过

javax.servlet.jsp.jstl:jstl:1.2

通过

这两个工件都应该包含JSTL1.2实现。但是,当我下载JAR并打开其中一个JAR中的文件
/META-INF/c.tld
(其内容相同)时,标题显示:

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
    version="2.1">

  <description>JSTL 1.1 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>c</short-name>
  <uri>http://java.sun.com/jsp/jstl/core</uri>
  ...

因此,问题是:为什么Maven存储库包含错误版本(1.1而不是1.2)的JAR(或者更具体地说是tld声明)以及如何通过Maven获取正确的JSTL版本?

您可以通过以下步骤在本地覆盖它:

  • 在.m2目录*中,复制并粘贴1.1文件夹的新副本
  • 将副本重命名为1.2
  • 将真实的1.2 jar复制到该文件夹中
  • 更新POM和其他文本文件,以反映它是1.2
  • *所有平台上的$HOME/.m2

  • 作为短期修复,用java.net中正确的JAR替换本地
    .m2
    repo中的JAR文件

    如果您使用代理,也可以在那里替换它

  •   ...
      <description>JSTL 1.2 core library</description>
      <display-name>JSTL core</display-name>
      <tlib-version>1.2</tlib-version>
      <short-name>c</short-name>
      <uri>http://java.sun.com/jsp/jstl/core</uri>
      ...