我有一个关于 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)?因为当我在应用程序下运行测试用例时,应用程序将读取 common/conf 文件夹下的 xml 配置文件,但应用程序无法从 jar 文件中读取 xml。因为现在我的代码无法处理来自 Jar 的 inputStream。是否使用:res.getFile() 其中 res 是对 xml 配置文件的引用。我是 Maven 和 Gradle 的新手。有人可以帮忙吗?万分感激!
1 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
如果您想要实现的目标是在运行时从 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")
添加回答
举报
0/150
提交
取消