解决Gradle工程编译源文件忽略xml,properties,config等文件的问题

如果你使用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指定路径的使用搞晕。
 

你可能感兴趣的:(xml,Hibernate,mybatis,gradle,idea)