如何使用 Gradle 在 Eclipse 中启动一个新的后端 Web 项目?

How to start a new backend web project in Eclipse with Gradle?

我最近转向后端,我必须为 Web 应用程序创建后端。它将具有以下配置:

我尝试在 Eclipse 中使用 Dynamic Web ProjectGradle Project 创建并阅读指南 here 但无法正确获取所有功能。我想要有关如何执行此操作的分步指南。

此外,我不确定是否为此使用 Gradle 或 Maven。我有 Gradle 的经验,因为我制作了 Android 应用程序,但 Jersey 的所有教程都使用 Maven。

使用 Maven 还是 Gradle 并不重要:两者都可以。但是我建议暂时不要使用 Jakarta EE 9:Eclipse 插件在处理它时仍然有一些怪癖。例如。您可以将 Eclipse 项目的 Servlet API 设置为 5.0,但 Eclipse 将拒绝将其部署到服务器上。

要使用 Jersey 启动,您只需要:

  1. 创建动态 Web 项目(4.0 版)并创建一个 web.xml 像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    id="WebApp_ID" version="4.0">
    <display-name>gradle-jersey</display-name>
    <!-- No class name, Jersey will pick it up -->
    <servlet>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
    </servlet>
    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>
  1. 在项目的上下文菜单中运行 配置>添加gradle自然(我假设你已经安装了Buildship插件),
  2. 创建一个 build.gradle 文件,内容为:
plugins {
    id 'war'
}
repositories {
    mavenCentral()
}
dependencies {
    implementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '2.34'
    implementation group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '2.34'
}
eclipse.wtp.facet {
    // Change the version of the Dynamic Web Module facet
    facet name: 'jst.web', version: '4.0'
    def oldJstWebFacet = facets.findAll {
        it.name == 'jst.web' && it.version == '2.4'
    }
    facets.removeAll(oldJstWebFacet)
    // Add the JAX-RS (REST Web Services) facet
    facet name: 'jst.jaxrs', version: '2.1'
}
  1. 在项目的上下文菜单中 运行 Gradle > 刷新 Gradle 项目,
  2. Eclipse 现在应该在其 构建路径中具有 Gradle 的依赖项...,
  3. 您可以创建一个简单的 JAX-RS 资源:
@Path(value = "/hello")
public class Hello {

   @GET
   public String greet() {
      return "Hello world!";
   }
}
  1. 您可以在服务器上使用 "运行 > 运行" 来 运行 项目。您的资源将在 http://localhost:8080/<project_name>/hello URL.