MAVEN打包包含更多资源文件和IDEA集成JSP

利用MAVEN打包时,如何包含更多的资源文件

首先,来看下MAVENx项目标准的目录结构:html


 

通常状况下,咱们用到的资源文件(各类xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。java

 

有时候,好比mybatis的mapper.xml文件,咱们习惯把它和Mapper.java放一块儿,都在src/main/java下面,这样利用maven打包时,就须要修改pom.xml文件,来把mapper.xml文件一块儿打包进jar或者war里了,不然,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。网络上有不少方法,我大概试了下,几种方法均可以,能够任选一种便可。web

 

方法1,其中**/*这样的写法,是为了保证各级子目录下的资源文件被打包。spring

Xml代码 apache

<build>  
    <finalName>test</finalName>  
    <!--  
    这样也能够把全部的xml文件,打包到相应位置。  
    <resources>  
        <resource>  
            <directory>src/main/resources</directory>  
            <includes>  
                <include>**/*.properties</include>  
                <include>**/*.xml</include>  
                <include>**/*.tld</include>  
            </includes>  
            <filtering>false</filtering>  
        </resource>  
        <resource>  
            <directory>src/main/java</directory>  
            <includes>  
                <include>**/*.properties</include>  
                <include>**/*.xml</include>  
                <include>**/*.tld</include>  
            </includes>  
            <filtering>false</filtering>  
        </resource>  
    </resources>  
</build> 

 

方法2,利用build-helper-maven-plugin插件api

Xml代码  tomcat

<build>  
    ...  
    </plugins>  
        ...  
        <!--  
        此plugin能够用  
        利用此plugin,把源代码中的xml文件,  
        打包到相应位置,这里主要是为了打包Mybatis的mapper.xml文件   
        -->  
        <plugin>  
            <groupId>org.codehaus.mojo</groupId>  
            <artifactId>build-helper-maven-plugin</artifactId>  
            <version>1.8</version>  
            <executions>  
                <execution>  
                    <id>add-resource</id>  
                    <phase>generate-resources</phase>  
                    <goals>  
                        <goal>add-resource</goal>  
                    </goals>  
                    <configuration>  
                        <resources>  
                            <resource>  
                                <directory>src/main/java</directory>  
                                <includes>  
                                    <include>**/*.xml</include>  
                                </includes>  
                            </resource>  
                        </resources>  
                    </configuration>  
                </execution>  
            </executions>  
        </plugin>     
        ...  
    </plugins>       
    ...  
</build>  

 

方法3,利用maven-resources-plugin插件springboot

 

Xml代码  网络

<build>  
    ...  
    </plugins>  
        ...  
        <!--  
        此plugin能够用  
        利用此plugin,把源代码中的xml文件,打包到相应位置,  
        这里主要是为了打包Mybatis的mapper.xml文件   
        -->  
        <plugin>  
            <artifactId>maven-resources-plugin</artifactId>  
            <version>2.5</version>  
            <executions>  
                <execution>  
                    <id>copy-xmls</id>  
                    <phase>process-sources</phase>  
                    <goals>  
                        <goal>copy-resources</goal>  
                    </goals>  
                    <configuration>  
                        <outputDirectory>${basedir}/target/classes</outputDirectory>  
                        <resources>  
                            <resource>  
                                <directory>${basedir}/src/main/java</directory>  
                                <includes>  
                                    <include>**/*.xml</include>  
                                </includes>  
                            </resource>  
                        </resources>  
                    </configuration>  
                </execution>  
            </executions>  
        </plugin>     
        ...  
    </plugins>       
    ...  
</build>  

 

例如:使用IDEA前台使用JSP页面展示视图,须要进行以下配置,不然会提示404,找不到页面mybatis

POM文件:

<!-- 引入springboot 内嵌的Tomcat对JSP的解析包 -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<!-- servlet依赖的jar包start -->
 <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
</dependency>
<!-- servlet依赖的jar包end -->

<!-- jsp依赖的jar包start -->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.3.1</version>
</dependency>
<!-- jsp依赖的jar包end -->

<!-- jstl标签依赖的jar包start -->
<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>jstl</artifactId>
</dependency>
<!-- jstl标签依赖的jar包end -->
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <!-- 使用IDEA开发JSP,为了防止找不到页面,出现404错误,必须加入下面配置 -->
        <!--
        maven打包配置resources:
        -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
            <!-- 这个表示把src/main/webapp下面全部文件(**/*.*)都编译到 META-INF/resources目录下-->
            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
</build>

application.properties:

#前段视图采用JSP,配置jsp先后缀
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

Controller:

@Controller
public class JspController {

    @RequestMapping("/boot/index")
    public String index(Model model){
        model.addAttribute("msg","spring boot 集成 JSP");
        return "index";
    }
}

JSP页面:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>INDEX</title>
</head>
<body>
<div>
    ${msg}
</div>
</body>
</html>

效果:

相关文章
相关标签/搜索