Gradle vs Maven中的依赖路径差异

Guifan Li

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

julz256

如果您要实现的目标是在运行时从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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章