Java Gradle与Maven中的依赖路径差异

Java Gradle与Maven中的依赖路径差异,java,maven,gradle,jar,Java,Maven,Gradle,Jar,关于Gradle依赖机制和Maven依赖机制之间的区别,我有一个问题: 我的项目结构如下,app依赖于common: project common conf src java test app conf src java test 而应用程序中的build.gradle是: dependencies {

关于Gradle依赖机制和Maven依赖机制之间的区别,我有一个问题:

我的项目结构如下,app依赖于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时。类路径包含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不同,Ant需要配置所有内容


如果您的xml文件位于
common.jar
(将xml放入
common/src/main/resources
,并且common位于
app
的类路径上,那么您应该能够通过类加载器读取这些文件。例如
someclassfrommon.class.getClassLoader().getResourceAsStream(“somefile.xml”)

非常感谢您的帮助。这有助于我更好地理解底层内容!