Gradle 与 Maven 中的依赖路径差异

我有一个关于 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 的新手。有人可以帮忙吗?万分感激!


凤凰求蛊
浏览 92回答 1
1回答

阿波罗的战车

如果您想要实现的目标是在运行时从 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")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java