maven资源文件的相关配置

来源:互联网 发布:slack软件应用 编辑:程序博客网 时间:2024/05/19 23:24
原文地址:https://www.cnblogs.com/pixy/p/4798089.html

maven资源文件的相关配置

构建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项目的标准目录结构

  • src
    • main
      • java         源文件 
      • resources    资源文件
      • filters   资源过滤文件
      • config   配置文件
      • scripts   脚本文件
      • webapp   web应用文件
    • test
      • java    测试源文件
      • resources    测试资源文件
      • filters    测试资源过滤文件
    • it       集成测试
    • assembly    assembly descriptors
    • site    Site
  • target
    • generated-sources
    • classes
    • generated-test-sources
    • test-classes
    • xxx.jar
  • pom.xml
  • LICENSE.txt
  • NOTICE.txt
  • README.txt

 

资源文件的配置

资源文件是Java代码中要使用的文件。代码在执行的时候会到指定位置去查找这些文件。前面已经说了Maven默认的处理方式,但是有时候我们需要进行自定义的配置。

有时候有些配置文件通常与.java文件一起放在src/main/java目录(如mybatis或hibernate的表映射文件)。有的时候还希望把其他目录中的资源也复制到classes目录中。这些情况下就需要在Pom.xml文件中修改配置了。

可以有两种方法:

  • 一是在<build>元素下添加<resources>进行配置。
  • 另一种是在<build>的<plugins>子元素中配置maven-resources-plugin等处理资源文件的插件。

 

配置resouces节点

复制代码
  <build>    .......      <resources>        <resource>            <directory>src/main/resources</directory>            <excludes>                <exclude>**/*.properties</exclude>                <exclude>**/*.xml</exclude>             </excludes>            <filtering>false</filtering>        </resource>        <resource>            <directory>src/main/java</directory>            <includes>                <include>**/*.properties</include>                <include>**/*.xml</include>            </includes>            <filtering>false</filtering>        </resource>    </resources>    ......</build>
复制代码

 

配置资源处理插件

复制代码
       <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>
复制代码

 

另一个插件也能完成相同的功能

复制代码
        <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> 
复制代码

 

 

打包时文件相关的配置

打包时target/classes目录中的资源文件会和class字节码一起被打进jar包或war包中。有时候默认的情况不能完全满足需求,如target/classes目录中的一些文件不希望打入jar包中,就需要额外配置maven-jar-plugin插件。

复制代码
       <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-jar-plugin</artifactId>                <version>2.4</version>                <configuration>                    <excludes>                        <exclude>*.properties</exclude>                    </excludes>                    <archive>                        <manifest>                            <addClasspath>true</addClasspath>                            <mainClass>xxxxxx.ConsoleLauncher</mainClass>                        </manifest>                    </archive>                </configuration>            </plugin>
复制代码

 

 

 

 

参考资料

http://bglmmz.iteye.com/blog/2063856

 

分类: Maven
标签: Maven, jar, resources
好文要顶 关注我 收藏该文
XRacoon
关注 - 14
粉丝 - 10
+加关注
5
0

« 上一篇:《Java核心技术卷一》笔记 多线程
» 下一篇:Java SSH库使用简介:Apache sshd和JSch(Java Secure Channel)
    </div>    <div class="postDesc">posted @ <span id="post-date">2015-09-10 16:03</span> <a href="http://www.cnblogs.com/pixy/">XRacoon</a> 阅读(<span id="post_view_count">19540</span>) 评论(<span id="post_comment_count">1</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=4798089" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(4798089);return false;">收藏</a></div></div><script type="text/javascript">var allowComments=true,cb_blogId=154971,cb_entryId=4798089,cb_blogApp=currentBlogApp,cb_blogUserGuid='26c69254-46d9-e211-8d02-90b11c0b17d6',cb_entryCreatedDate='2015/9/10 16:03:00';loadViewCount(cb_entryId);var cb_postType=1;</script>



  
#1楼38130712017/10/17 13:44:14 2017-10-17 13:44 CREATE_17  
写得很棒很详细,很有用
支持(0)反对(0)
http://pic.cnblogs.com/face/1117352/20170404174404.png
刷新评论刷新页面返回顶部
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【新闻】H3 BPM体验平台全面上线
【推荐】Vue.js 2.x 快速入门,大量高效实战示例
【活动】腾讯云 学生专属优惠套餐 多规格选择
葡萄城1114
最新IT新闻:
· 在博物馆不了解艺术品?Google Lens告诉你答案
· 围观奇文:这位香港朋友说,我们上等人不用支付宝….
· 明日起网购火车票也可微信支付了 线下将逐步支持
· 惠特曼披露辞任后打算:休息一下 绝不会去对手公司
· 酷骑取消现场退押金 只能打电话|但电话打不通
» 更多新闻…
阿里云1113
最新知识库文章:
· 大道至简,职场上做人做事做管理
· 关于编程,你的练习是不是有效的?
· 改善程序员生活质量的 3+10 习惯
· NASA的10条代码编写原则
· 为什么你参加了那么多培训,却依然表现平平?
» 更多知识库文章…
fixPostBody(); setTimeout(function () { incrementViewCount(cb_entryId); }, 50); deliverAdT2(); deliverAdC1(); deliverAdC2(); loadNewsAndKb(); loadBlogSignature(); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid); GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate, cb_postType); loadOptUnderPost(); GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);
</div><!--end: forFlow --></div>
原创粉丝点击