我有一个关于 Gradle 依赖机制与 Maven 依赖机制之间的区别的问题:
我的项目结构如下,app依赖于common:
project
common
conf
src
java
test
app
conf
src
java
test
并且app中的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
中的单元测试类路径资源以及 /src/test/java
中的单元测试 Java 代码。
遵循 Mavan/Gradle 约定也将使您的配置更简单。与 Ant 不同的是,一切都需要配置。
如果您的 xml 文件位于 common.jar
中(通过将 xml 放入 common/src/main/resources
中,并且 common 位于 for app
那么你应该能够通过类加载器来读取这些文件。例如 SomeClassFromCommon.class.getClassLoader().getResourceAsStream("somefile.xml")
关于java - Gradle 与 Maven 中的依赖路径差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58001243/