Java Spring启动应用程序,其中包含来自其他Maven模块的部分JSP文件
假设我们有一个使用JSP模板的基于Spring引导的web应用程序。它甚至可以像下面的示例一样简单(来自官方) 项目结构:Java Spring启动应用程序,其中包含来自其他Maven模块的部分JSP文件,java,spring,jsp,spring-mvc,spring-boot,Java,Spring,Jsp,Spring Mvc,Spring Boot,假设我们有一个使用JSP模板的基于Spring引导的web应用程序。它甚至可以像下面的示例一样简单(来自官方) 项目结构: |-src/main/java/ | |-sample.tomcat.jsp | |-SampleTomcatJspApplication.java | |-WelcomeController.java |-src/main/resources/ | |-application.properties |-src/test/java/
|-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
,当请求/
时,我们可以看到欢迎.jsp的正确呈现内容
更改
现在,让我们进行以下更改
将WelcomeController.java
复制为WelcomeController2.java
并更改位请求映射、模型属性和返回的视图名称,例如:
@RequestMapping("/2")
public String welcome2(Map<String, Object> model) {
model.put("message", "Hi from Welcome2");
return "welcome2";
}
然后,当请求/2
时,我们可以看到welcome2.jsp
的正确呈现内容
问题
如何将此类项目拆分为两个maven项目,以便WelcomeController2.java
和welcome2.jsp
都可以移动到其他项目(maven依赖项),并且在请求/2
URL时仍能成功解决
请注意,使用Spring Bootweb fragment.xml
(可以放在依赖项的META-INF
目录中)会被忽略。不幸的是,我不知道有什么简单的方法可以做到这一点,但我使用的一种方法是创建一个Maven工件,就像主项目的正常情况一样,在您的情况下可能是一个WAR工件。此项目需要依赖于您的第二个项目。然后,您的第二个项目将由两部分组成:
包含已编译类文件的标准Maven JAR工件
由JSP文件组成的ZIP,这些文件也需要包含在WAR归档中。这将在包
阶段从第二个项目生成,但需要使用zip
分类器作为主项目的独立依赖项包含李>
构建第一个项目时,您需要将其作为WAR归档打包过程的一部分。如果您想让它在IDE中工作,您可能需要在相当早期的阶段将其解包,例如流程资源
或生成源
|-src/main/java/
| |-sample.tomcat.jsp
| |-SampleTomcatJspApplication.java
| |-WelcomeController.java
| |-WelcomeController2.java
...
|-src/main/webapp/
| |-WEB-INF
| |-jsp
| |-welcome.jsp
| |-welcome2.jsp