我有一个关于Gradle依赖机制与Maven依赖机制之间的区别的问题:
我的项目结构如下,应用程序依赖于common:
project
common
conf
src
java
test
app
conf
src
java
test
应用程序中的build.gradle是:
dependencies {
compile project(':common')
....
}
sourceSets {
main {
java {
srcDir 'src/java'
}
resources {
srcDir 'conf'
}
}
test {
java {
srcDir 'src/test'
}
}
}
当我使用ant dist时。类路径包含/ common / conf文件夹,其中包含许多配置文件。当我使用Gradle构建时。类路径包含build / common.jar而不是/ common / conf。
有什么办法可以使Gradle做与Maven相同的事情(使类路径包含/ common / conf而不是build / common.jar)?
因为当我在app下运行测试用例时,app会读取common / conf文件夹下的xml配置文件,但是app无法从jar文件读取xml。因为现在我的代码无法处理Jar中的inputStream。
是否使用:
res.getFile()
其中res是对xml配置文件的引用。
我是Maven和Gradle的新手。有人可以帮忙吗?真的很感谢!
如果您要实现的目标是在运行时从Jar中获得这些xml文件,则只需将XML文件添加到中即可/src/main/resources
。
该目录中的所有内容都会自动添加到Jar文件中,并可用作类路径资源。Maven和Gradle都使用约定而不是配置,这是一种将类路径资源放入其中的惯例,/src/main/resources
就像将应用程序Java代码放入其中/src/main/java
并将单元测试类路径资源放入其中/src/test/resources
并将单元测试Java代码放入其中一样/src/test/java
。
遵循Mavan / Gradle约定也会使您的配置更简单。与Ant不同,后者需要配置所有内容。
如果您的xml文件位于common.jar
(通过将xml放在中common/src/main/resources
,并且common位于for的类路径上),app
则您应该能够通过类加载器读取这些文件。SomeClassFromCommon.class.getClassLoader().getResourceAsStream("somefile.xml")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句