Jersey + Swagger + Swagger-UI + Maven配置

7 eclipse jersey maven swagger swagger-ui

我第一次和Jersey和Maven一起招摇,我想知道我是否正走在正确的道路上.我在我的本地电脑上工作了球衣,maven和swagger.很快,我想将它部署到不同的环境并包括swagger-ui.

  1. 如果我配置我的web.xml文件,<param-value>http://localhost:8080/api</param-value>那么我看到swagger在我的本地计算机上运行.但是每次我想将代码部署到不同的环境(例如从Dev环境,QA环境到生产环境)时,我是否需要更改此地址,如果是这样,我将如何进行此操作或是否不可能/不是什么样的招摇?

  2. 我想将swagger-ui与我的项目结合起来.我看到在线建议从git手动下载文件并将其放入我的项目中.但我想知道的是,如果有一个maven依赖,我可以使用,以便我可以使用maven获取必要的代码使用swagger-ui并配置它与泽西一起使用.如果是这样,依赖关系是什么,我如何使用它来通过多个环境部署代码?

如果可能的话,请提供指导和教程链接,因为我是这项技术的新手.另外,如果我在思考过程中使用jersey/swagger/swagger-ui/maven而无需从git手动下载代码并能够通过多种环境部署代码,请告诉我,以便我可以寻找另一种使用方法我的应用程序中的REST.

谢谢您的帮助.

pom.xml中:

    <repositories>
      <repository>
          <id>maven2-repository.java.net</id>
          <name>Java.net Repository for Maven</name>
          <url>http://download.java.net/maven/2/</url>
          <layout>default</layout>
      </repository>
  </repositories>

  <properties>
      <jersey2.version>2.19</jersey2.version>
      <jaxrs.version>2.0.1</jaxrs.version>
  </properties>

  <!-- Dependencies -->
  <dependencies>


    <!-- JAX-RS -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>${jaxrs.version}</version>
    </dependency>
    <!-- Jersey 2.19 -->
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>${jersey2.version}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>${jersey2.version}</version>
    </dependency>

     <!-- Servlet Library -->
     <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
     <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.1.0</version>
         <scope>provided</scope>
     </dependency>

     <!-- Spring dependencies -->
     <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>4.1.4.RELEASE</version>
     </dependency>

     <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-web</artifactId>
         <version>4.1.4.RELEASE</version>
     </dependency>

     <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>4.1.4.RELEASE</version>
     </dependency>

    <!-- Junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-jersey2-jaxrs</artifactId>
        <version>1.5.0</version>
    </dependency>
  </dependencies>
Run Code Online (Sandbox Code Playgroud)

web.xml中

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  id="WebApp_ID" version="3.0">

  <display-name>HelloWorldSpring</display-name>

  <servlet>
      <servlet-name>spring-mvc</servlet-name>
      <servlet-class>
          org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>    

  <servlet-mapping>
      <servlet-name>spring-mvc</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

  <servlet>
      <servlet-name>jersey-serlvet</servlet-name>
      <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
      <init-param>
           <param-name>jersey.config.server.provider.packages</param-name>
           <param-value>
           io.swagger.jaxrs.listing, 
           com.jer.rest
           </param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
      <servlet-name>jersey-serlvet</servlet-name>
      <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>


   <servlet>
      <servlet-name>Jersey2Config</servlet-name>
      <servlet-class>io.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>
      <init-param>
          <param-name>api.version</param-name>
          <param-value>1.0.0</param-value>
      </init-param>
      <init-param>
          <param-name>swagger.api.basepath</param-name>
          <param-value>http://localhost:8080/HealthTracker/rest</param-value>
      </init-param>
      <load-on-startup>2</load-on-startup>
  </servlet>

   <!-- Other XML Configuration -->
  <!-- Load by Spring ContextLoaderListener -->
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/root-context.xml</param-value>
  </context-param>


   <!-- Spring ContextLoaderListener -->
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

</web-app>
Run Code Online (Sandbox Code Playgroud)

Sam*_*ada 1

我认为以下内容可以回答您的问题:

  1. 为了能够根据不同的环境配置 swagger,您可以遵循以下步骤:

    i) 创建一个 Bootstrap 类来配置 swagger bean(参考: https: //github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5设置 Api带 Swagger UI 的版本

    ii) 使用属性文件中的值设置上述 bean 中的值,您可以在任何环境中的代码外部轻松配置该值。

  2. Swagger dist 由 html/css/image/js 文件组成。它无法添加为 Maven jar 依赖项。

希望这可以帮助!