Gradle Compile:如何从依赖中识别组和模块?

时间:2017-03-15 22:28:26

标签: gradle module

有时候,我不想添加所有依赖项,所以我需要从依赖项中排除一些,例如:

  compile('com.google.http-client:google-http-client:1.20.0') {
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
    }

我在github here中找到了com.google.http-client源代码,但是,从源代码我无法找到哪个部分属于组" org.apache .httpcomponents "哪个部分属于' httpclient '

我是Gradle的初学者,所以任何人都可以解释如何识别群组模块

(例如stackoverflow问题here,有人发帖排除群组' ****',模块:' ****' ,但我想知道组和模块在哪里,所以将来我可以自己解决这个问题。)

2 个答案:

答案 0 :(得分:3)

不是要将某些类或包从依赖项中排除,而是排除某些传递依赖项。组和模块是在maven存储库中查找库的属性。为了你的依赖

com.google.http-client:google-http-client:1.20.0

群组为com.google.http-client,模块为google-http-client,版本为1.20.0。当你添加

exclude group: 'org.apache.httpcomponents', module: 'httpclient'

默认情况下,您只需排除要加载并添加到项目中的sone transitive依赖项。

在您的确切情况下,您可以查看项目的pom-file,它声明项目依赖关系如下:

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>${project.httpclient.version}</version>
</dependency>

此处,group等于groupIdmodule等于artifactId。你可以阅读它here

如果您想了解项目中的传递依赖项,可以查看repository web page上的库描述页面,或者只需在命令行gradle dependencies中调用即可打印出来项目的所有依赖项,包括传递依赖项。

答案 1 :(得分:1)

我倾向于使用grepcode。因此,对于您的示例,您可以在http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.http-client/google-http-client/1.20.0/浏览'com.google.http-client:google-http-client:1.20.0'的依赖项。