maven编译少文件
- 环境
- java开发工具版本:IntelliJ IDEA 2017.2
- maven版本: apache-maven-3.3.9
-
问题描述
- java代码之前一直正常执行,更新代码重新编译后,target的class中缺少properties文件,代码执行一直失败。
- 尝试了删除target文件,各种rebuild project,编译始终缺失文件。
-
问题分析
- maven在编译处理文件时,有默认的目录查找文件的方式。 src/main/java和src/test/java 这两个目录中的所有*.java文件会分别在compile和test-compile阶段被编译,编译结果分别放到了target/classes和target/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。
- 因此当工程中有自定义的存放方式,在编译的时候容易被忽略出现缺失文件。我的工程中的properties文件放在了src/test/java目录下,因此我在工程pom.xml文件build节点中增加了resouces配置节点,从而解决了问题。
<resources>
<resource>
<directory>src/test/java</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
- Maven项目的标准目录结构
- 引自 http://www.cnblogs.com/pixy/p/4798089.html
- src
- main
- java 源文件
- resources 资源文件
- filters 资源过滤文件
- config 配置文件
- scripts 脚本文件
- webapp web应用文件
- test
- java 测试源文件
- resources 测试资源文件
- filters 测试资源过滤文件
- it 集成测试
- assembly assembly descriptors
- site Site
- main
- target
- generated-sources
- classes
- generated-test-sources
- test-classes
- xxx.jar
- pom.xml
- LICENSE.txt
- NOTICE.txt
- README.txt