2011-06-30 58 views
2

我正在尋找一種簡單的方法從Maven存儲庫中獲取JSTL 1.2實現JAR,這聽起來相當容易,但實際上證明相當困難。已聲明JSTL 1.2版,但是從Maven倉庫發佈了1.1版

我嘗試了以下軟件包:

javax.servlet : jstl : 1.2
通過http://repo1.maven.org/maven2/javax/servlet/jstl/1.2/jstl-1.2.jar

javax.servlet.jsp.jstl : jstl : 1.2
通過http://download.java.net/maven/1/javax.servlet.jsp.jstl/jars/jstl-1.2.jar

這兩個文物應包含JSTL 1.2實現。然而,當我下載JAR和打開文件/META-INF/c.tld這些JAR的一個內(它們的內容是一樣的),頭顯示:

<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> 
    ... 

這意味着該標籤是不是1.2,但1.1的標籤。爲了便於比較,我直接從http://download.java.net/maven/glassfish/org/glassfish/web/jstl-impl/1.2/jstl-impl-1.2.jar下載JAR文件的c.tld文件看起來是正確的:

... 
    <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> 
    ... 

所以,問題是:Maven倉庫爲什麼包含JAR文件(或者更具體地說是TLD聲明)的錯版本(1.1而不是1.2)以及如何通過Maven獲取正確的JSTL版本?

回答

1

您可以通過以下步驟在本地覆蓋它:

  1. 在你的目錄中的.m2 *,複製並粘貼文件夾1.1的新副本。
  2. 將副本重命名爲1.2
  3. 將真正的1.2 jar複製到該文件夾​​。
  4. 更新POM和其他文本文件沒有反映事實,這是1.2

* $ HOME /所有平臺上的.m2目錄。