gradle 组、模块和工件中有什么?

What's in gradle a group, module and artifact?

gradle 文档没有花时间解释他们正在处理的实体。所以才想问这么基础的问题

我要详细了解 group、module 和 artifact 这些术语的真正含义来更改此代码:

compile('com.thoughtworks.xstream:xstream:1.4.7') {
    exclude group: 'xmlpull', module: 'xmlpull'
}

大约一年前,我使用从 Android dalvik conversion for xmlpullparser 中获取的排除语句来修复多个 dex 文件失败。

但是升级到AndroidStudio 3.0后又出现了这个错误!现在它说: Multiple dex files define Lorg/xmlpull/mxp1/MXParser 有时 ...XmlPullParserException.java 所以,我想了解我给 exclude 的参数必须如何整形。

阅读 documentation 可以认为 group 是包名称,工件是 class:

//excluding a particular transitive dependency:
exclude module: 'cglib' //by artifact name
exclude group: 'org.jmock' //by group
exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group

另一个 chinese page (translated) 使用了那些排除项

 compile ( 'com.thoughtworks.xstream: xstream: 1.4.7' ) {
       exclude group : 'xmlpull' 
       exclude group : 'XmlPullParser' 
 }

建立在那个发现奇迹的基础上

组、工件和版本是半随机选择的,不需要匹配包或 jar 文件中的 类。

例如 commons-langgroupId = 'commons-lang' 但 类 在 org.apache.commons.lang.* 包中

组、工件和版本在项目的构建文件中定义。在 Maven 中,这将在 pom.xml 中,在 gradle 中,这将在 build.gradle(和 settings.gradle

如果您想了解项目的组、工件、版本(又名 GAV,又名 maven 坐标),您通常会转到项目的主页。

您还可以使用 maven central advanced search 到 "fuzzy" 搜索,例如通过 artifactId 或 jar 中的类名。如果您使用的是内部存储库,您可能 "fuzzy" 还可以通过 Web 界面进行搜索