解决Gradle工程编译源文件忽略xml,properties,config等文件的问题
博客专区 > asay 的博客 > 博客详情
解决Gradle工程编译源文件忽略xml,properties,config等文件的问题
asay 发表于2年前
解决Gradle工程编译源文件忽略xml,properties,config等文件的问题
  • 发表于 2年前
  • 阅读 2290
  • 收藏 4
  • 点赞 2
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: IDEA中使用构建工具Gradle,使用hibernate,Mybatis,log4j等的xml配置文件无法编译到输出目录中,原因是没有配置好Gradle。

如果你使用Gradle构建项目后,发现.java文件同级目录中.xml文件没有被拷贝到.class的输出目录中,可以在项目配置中加入

sourceSets.main.java.srcDirs = ['src']

sourceSets.main.resources.srcDirs = sourceSets.main.java.srcDirs

原理:

task compileJava,任务类型JavaCompile ,只编译".java"文件,其他类型文件全部忽略,输出目录为 build/classes/main。

task processResources,任务类型Copy,忽略".java"文件,其他文件全部拷贝到 build/resources/main目录。

将resource指向src路径后,在任务processResources中,会将所有.xml等配置文件拷贝到build/resources/main中,而默认IDEA会将这个路径加入到classpath中的。

扩展:

还有些配置文件放在指定目录中,比如指定一个'config'目录用来存放一些数据库配置参数。

读取时使用 class.getClassLoader().getResourceAsStream() 方法读取,这些文件的目录也要加入到classpath中的。可以在工程中配置

dependencies {   
  // 将config目录加入runtime classpath中
  runtime files('config') 
}
这样这个目录中的文件就可以在运行时加载了,到现在希望你没有被ClassLoader指定路径的使用搞晕。
 
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 14
码字总数 5272
×
asay
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: