关于Java:如何摆脱servlet容器特定的库jsp-api.jar?

How to get rid of servletcontainer-specific library jsp-api.jar?

我正面临此处描述的问题。我发现对jsp-api.jar的依赖关系,实际上是对Joda-Time的依赖关系:

1
2
3
4
5
6
7
8
9
10
11
<dependency>
    <groupId>joda-time</groupId>
    joda-time-jsptags</artifactId>
    <version>1.0.1</version>
    <exclusions>
        <exclusion>
            jsp-api</artifactId>
            <groupId>javax.servlet</groupId>
        </exclusion>
    </exclusions>
</dependency>

我试图排除它(请参见上文),但是该应用程序无法编译。如何确定.war中未附带jsp-api?


而不是排除此库,而是使用provided范围将显式添加到依赖项:

1
2
3
4
5
6
7
8
9
10
11
<dependency>
    <groupId>joda-time</groupId>
    joda-time-jsptags</artifactId>
    <version>1.0.1</version>
</dependency>
<dependency>
    jsp-api</artifactId>
    <groupId>javax.servlet</groupId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>

使用provided范围将适当版本的JSP API添加到项目的依赖项中。它将在编译时可用,但是Maven会认为它是由运行时环境提供的,因此不随应用程序一起提供。