• maven打包之resource配置


    一、简介

    构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。

    ● src/main/java和src/test/java 

    这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。

    ● src/main/resouces和src/test/resources

    这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。 

    ● target/classes

    打包插件默认会把这个目录中的所有内容打入到jar包或者war包中。

    如下所示:

     二、Maven项目的标准目录结构

     三、打包时资源文件的配置

    3.1、打包src/main/java目录下的xml

    一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。

    有时候,比如mybatis的mapper.xml文件,我们习惯把它和Mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)

    下面通过一个简单的示例来说明:

    项目结构如下所示,有两个UserMaper.xml文件,所在目录不同

     默认情况下,在POM.XML目录下执行: mvn clean package 打包命令在targetclasses目录下不会把UserMapper.xml打包到下mapper目录下

     而resources目录下的文件始终都会打包进jar包或war包

     这个时候使用mybatis就会出一些问题,找不到UserMapper所对应的xml文件解决方法有如下几种:

    (1)配置POM.XML的resource把xml也打包到mapper目录下

    <build>
           <!-- 资源目录 -->    
            <resources>    
                <resource>    
                    <!-- 设定主资源目录  -->    
                    <directory>src/main/java</directory>    
     
                    <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,只处理如下配置中包含的资源类型 -->     
                     <includes>
                          <include>**/*.xml</include>
                     </includes>  
                         
                    <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,不处理如下配置中包含的资源类型(剔除下如下配置中包含的资源类型)-->      
                    <excludes>  
                        <exclude>**/*.yaml</exclude>  
                    </excludes>  
     
                    <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,指定处理后的资源文件输出目录,默认是${build.outputDirectory}指定的目录-->      
                    <!--<targetPath>${build.outputDirectory}</targetPath> -->      
       
                    <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,是否对主资源目录开启资源过滤 -->    
                    <filtering>true</filtering>     
                </resource>              
            </resources>     
      </build>

    其中**/*这样的写法,是为了保证各级子目录下的资源文件被打包。resources是可以看做是容器,这个容器里面可以放很多个像resource这样的配置。而directory就是配置文件所在的路径,includes从英文单词角度看,就是包含的意思,此时在执行命令,就会把xml也打包到mapper目录下了

     (2)maven-resources-plugin插件

    为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。

    默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin来实现。

    <!--
                        此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>
  • 相关阅读:
    eclipse中向左缩进快捷键
    如何在Eclipse RCP中使用第三方包
    Eclipse RCP中Viewer交互的三种方式/Make your Eclipse applications richer with view linking
    【技术应用】vs2010 BCGControlBar 静态链编 link2001
    【技术应用】网页信息抓取与分析概要
    【技术应用】vs2010 libjingle login例子
    【技术应用】visual studio 2010 + chromium 更改代码 去掉地址栏
    【敏捷开发实践】起航
    【技术应用】vs2010 下编译 libjingle 库
    【技术应用】visual studio 2010 + chromium 下载编译
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/13821151.html
Copyright © 2020-2023  润新知