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

One*_*rld 5 android xstream gradle xmlpullparser android-gradle-plugin

gradle 文档不会花时间解释他们正在处理的实体。这就是为什么我想问这样一个基本问题。

我需要详细了解术语“组”、“模块”和“工件”对于更改此代码的真正含义:

compile('com.thoughtworks.xstream:xstream:1.4.7') {
    exclude group: 'xmlpull', module: 'xmlpull'
}
Run Code Online (Sandbox Code Playgroud)

大约一年前,我使用从Android dalvik 转换中为 xmlpullparser获取的排除语句来修复多个 dex 文件故障。

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

阅读文档,人们可能会认为组是包名称,而工件是类

//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
Run Code Online (Sandbox Code Playgroud)

另一个中文页面翻译)使用了那些排除项

 compile ( 'com.thoughtworks.xstream: xstream: 1.4.7' ) {
       exclude group : 'xmlpull' 
       exclude group : 'XmlPullParser' 
 }
Run Code Online (Sandbox Code Playgroud)

基于这一发现奇迹

  • xmlpull当包名称以 开头时如何工作org.xmlpull
  • 这些术语在我的场景中指的是哪些项目。组名是在哪里定义的?
  • 是什么样的团体XmlPullParser
  • 更改这些参数后我必须清理、重建还是仅仅构建项目?因为有时它会抱怨不同的文件。

lan*_*ava 3

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

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

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

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

您还可以使用maven 中央高级搜索来“模糊”搜索,例如通过 artifactId 或 jar 中的类名。如果您使用的是内部存储库,您也可以通过网络界面进行“模糊”搜索