【问题标题】:Spring Boot application with part of JSP files from other Maven module带有来自其他 Maven 模块的部分 JSP 文件的 Spring Boot 应用程序
【发布时间】:2015-11-11 23:54:05
【问题描述】:

假设我们有使用 JSP 模板的基于 Spring Boot 的 Web 应用程序。甚至可以像下面的例子一样简单(来自官方Spring Projects repository

项目结构:

|-src/main/java/
|    |-sample.tomcat.jsp
|        |-SampleTomcatJspApplication.java
|        |-WelcomeController.java
|-src/main/resources/
|    |-application.properties
|-src/test/java/
|    |-...
|-src/main/webapp/
|    |-WEB-INF
|        |-jsp
|            |-welcome.jsp
|-pom.xml

属性文件包含视图前缀/WEB-INF/jsp/ 和后缀.jsp,当请求/ 时,我们会看到welcome.jsp 的正确渲染内容。

WelcomeController.java

application.properties

变化

现在让我们进行以下更改

  1. WelcomeController.java 复制为WelcomeController2.java 并更改位请求映射、模型属性和返回的视图名称,例如:

    @RequestMapping("/2")
    public String welcome2(Map<String, Object> model) {
        model.put("message", "Hi from Welcome2");
        return "welcome2";
    }
    
  2. welcome.jsp 复制为welcome2.jsp,这样src/main/webapp 就会变成这样:

    |-src/main/java/
    |    |-sample.tomcat.jsp
    |        |-SampleTomcatJspApplication.java
    |        |-WelcomeController.java
    |        |-WelcomeController2.java
    ...
    |-src/main/webapp/
    |    |-WEB-INF
    |        |-jsp
    |            |-welcome.jsp
    |            |-welcome2.jsp
    

然后在请求/2时我们可以看到welcome2.jsp的正确渲染的内容。

问题

将这样的项目拆分为两个maven项目的方法是什么,以便WelcomeController2.javawelcome2.jsp可以移动到其他项目(maven依赖)并且在请求/2 URL时仍然可以成功解决?

请注意,使用 Spring Boot web-fragment.xml(可以放置在依赖项的 META-INF 目录中)将被忽略。

【问题讨论】:

    标签: java spring jsp spring-mvc spring-boot


    【解决方案1】:

    不幸的是,我不知道有什么简单的方法可以做到这一点,但我使用的一种方法是像普通的主项目一样创建一个 Maven 工件,在您的情况下可能是一个 WAR 工件。该项目将需要依赖于您的第二个项目。那么您的第二个项目将包含两个组件:

    1. 包含已编译类文件的标准 Maven JAR 工件。
    2. Maven assembly ZIP 包含需要包含在 WAR 存档中的 JSP 文件。这将在package 阶段从第二个项目生成,但需要使用zip 分类器作为对主项目的单独依赖项包含在内。

    在构建第一个项目时,您需要unpack the assembly dependency 作为 WAR 存档打包过程的一部分。如果您希望它在 IDE 中工作,您可能需要在相当早的阶段解压缩它,例如 process-resourcesgenerate-sources

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 2019-08-13
      • 1970-01-01
      • 2012-07-31
      • 2019-03-26
      • 2016-12-31
      • 2017-02-09
      • 1970-01-01
      • 2021-07-04
      相关资源
      最近更新 更多