Ubuntu 如何管理 JSP 依赖库

林舟
林舟
发布时间:2026-08-22| 56人浏览过
原创

前言

在 Ubuntu 上做 JSP 开发时,依赖库一旦靠手动维护,版本冲突、打包混乱和部署失败就会很快冒出来。本文把 Maven、Gradle 和手动管理三种方式拆开说明,重点解释 `provided`、`war` 打包和 Tomcat 部署这些真正影响结果的环节,方便你根据项目复杂度和维护周期做选择。

在 Ubuntu 上维护 JSP 项目时,最容易出问题的往往不是业务代码,而是依赖库版本、打包方式和部署目录。与其手动下载一堆 JAR 再逐个拷贝,不如从一开始就把依赖交给 Maven 或 Gradle 管理。下面按实际使用顺序梳理环境准备、两套主流方案以及手动管理的适用边界,方便你快速判断该怎么选、怎么配。

先准备 Java 环境

JSP 的编译和运行都依赖 JDK。Ubuntu 上建议先安装 OpenJDK 11 及以上版本,再继续后面的 Maven 或 Gradle 配置。

sudo apt update
sudo apt install openjdk-11-jdk
# 验证安装
java -version
# 应输出 Java 版本信息
javac -version # 应输出 Java 编译器版本信息

如果这一步没有通过,后续的项目初始化、依赖下载和 WAR 打包都无法正常完成。

用 Maven 管理 JSP 依赖

如果你希望配置方式更成熟、资料更多,Maven 仍然是 JSP 项目里最常见的方案。它通过 pom.xml 统一声明依赖、插件和打包方式,适合大多数 Ubuntu 上的 Java Web 开发场景。

安装并验证 Maven

sudo apt update
sudo apt install maven
# 验证安装
mvn -version
# 应输出 Maven 版本信息

创建带 JSP 支持的 Web 项目

可以直接使用 Maven 提供的 Web 项目骨架生成一个基础工程:

mvn archetype:generate -DgroupId=com.example -DartifactId=my-jsp-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
cd my-jsp-app

这样可以少做很多目录和基础配置的手工工作,适合作为 JSP 项目的起点。

在 pom.xml 中声明依赖和打包方式

JSP 项目通常至少要声明 Servlet API、JSP API,以及按需使用的 JSTL。这里最关键的是 provided 范围:表示这些库由 Tomcat 之类的 Servlet 容器在运行时提供,因此打包进 WAR 时不再重复带上,能减少冲突概率。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-jsp-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <!-- 必须为war类型,用于生成WAR包 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!-- Servlet API(运行时由Tomcat提供) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- JSP API(运行时由Tomcat提供) -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<!-- JSTL(可选,用于JSP标签库) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>my-jsp-app</finalName> <!-- 生成的WAR文件名 -->
<plugins>
<!-- 配置Tomcat插件(可选,用于快速部署到本地Tomcat) -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://localhost:8080/manager/text</url>
<server>TomcatServer</server> <!-- 需在~/.m2/settings.xml中配置Tomcat账号 -->
<path>/my-jsp-app</path> <!-- 部署路径 -->
</configuration>
</plugin>
</plugins>
</build>
</project>

这里还有两个细节不要漏掉:

  • <packaging>war</packaging> 必须存在,否则不会按 Web 应用方式生成 WAR 包。
  • 如果要用 Maven Tomcat 插件直接部署,需要提前在 ~/.m2/settings.xml 配好 Tomcat 账号信息。

构建并部署 Maven 项目

  • 下载依赖并编译项目:在项目根目录运行 mvn clean install,Maven 会自动下载 pom.xml 中声明的依赖,并把项目打包成 target/my-jsp-app.war 文件。
  • 部署到 Tomcat:把生成的 WAR 文件复制到 Tomcat 的 webapps 目录,比如 /var/lib/tomcat9/webapps/,Tomcat 会自动解压并部署。
  • 如果已经配置好 Tomcat Manager,也可以直接执行 mvn tomcat7:deploy 完成部署。

用 Gradle 管理 JSP 依赖

如果你更习惯脚本化配置,Gradle 也能完成同样的工作。它与 Maven 的核心思路一致,区别主要在于配置文件从 pom.xml 换成了 build.gradle。

安装并验证 Gradle

sudo apt update
sudo apt install gradle
# 验证安装
gradle -version
# 应输出 Gradle 版本信息

初始化 Gradle Web 项目

mkdir my-jsp-gradle-app
cd my-jsp-gradle-app
gradle init --type java-application
# 编辑build.gradle文件(见下文)

原始初始化模板不是完整 JSP Web 工程,因此后面还要手动补上 war 插件和依赖配置。

在 build.gradle 中添加插件和依赖

plugins {
    id 'java'
    id 'war' // 必须添加War插件,用于生成WAR包
}
repositories {
    mavenCentral() // 依赖仓库
}
dependencies {
    // Servlet API(运行时由Tomcat提供)
    providedCompile 'javax.servlet:javax.servlet-api:4.0.1'
    // JSP API(运行时由Tomcat提供)
    providedCompile 'javax.servlet.jsp:javax.servlet.jsp-api:2.3.3'
    // JSTL(可选)
    implementation 'javax.servlet:jstl:1.2'
}
// 配置War文件名
war {
    archiveFileName = 'my-jsp-gradle-app.war'
}

这套配置的关键点和 Maven 基本一致:Servlet API 与 JSP API 不应重复打进运行容器已经提供的环境中,而 WAR 插件决定了最终产物是否能被 Tomcat 直接部署。

构建并部署 Gradle 项目

  • 下载依赖并编译项目:运行 gradle build,Gradle 会生成 build/libs/my-jsp-gradle-app.war 文件。
  • 部署到 Tomcat:把 WAR 文件复制到 Tomcat 的 webapps 目录,Tomcat 会自动部署。

什么时候才考虑手动管理 JAR

如果项目非常简单,或者只是临时验证一个 JSP 页面,也可以把依赖库手动复制到应用的 WEB-INF/lib 目录,例如 /var/lib/tomcat9/webapps/myapp/WEB-INF/lib/。

但这种方式的问题也很直接:

  • 依赖版本全靠人工维护,容易遗漏或混用。
  • 项目迁移时,很难快速还原完整依赖关系。
  • 后续升级、排查冲突和多人协作成本都会明显增加。

因此,手动管理更适合临时场景,不适合作为长期维护方案。

实际使用时怎么选

如果你的目标是稳定、规范地维护 Ubuntu 上的 JSP 项目,优先选 Maven 通常最省事;如果团队本身已经在用 Gradle,也完全可以沿用。两者的共同原则其实只有两个:一是把依赖声明写进构建文件,二是明确哪些库由 Tomcat 这类容器提供,避免在 WAR 包里重复打包。

Maven、Gradle 与手动管理 JSP 依赖的对比图
三种依赖管理方式对比把三种方式放在同一张图里,方便读者快速判断哪种方案更适合当前项目。

从长期维护角度看,只要脱离手动拷贝 JAR 的方式,JSP 依赖管理就已经进入了更可控的状态。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。