IvyArtifactRepository

使用 Ivy 格式存储构建物和元数据的构建物仓库。

用于解析元数据和构建物文件时,将搜索所有可用的模式。

用于上传元数据和构建物文件时,仅使用一个主要模式

  1. 如果通过 IvyArtifactRepository.setUrl(java.lang.Object) 指定了 URL,则该 URL 将用于上传,并结合应用的 IvyArtifactRepository.layout(java.lang.String)
  2. 如果未指定 URL,但通过 IvyArtifactRepository.artifactPattern(java.lang.String)IvyArtifactRepository.ivyPattern(java.lang.String) 添加了额外的模式,则将使用第一个定义的模式。

这种类型的仓库由 RepositoryHandler.ivy(org.gradle.api.Action) 方法组创建。

属性

属性描述
allowInsecureProtocol

指定是否允许通过不安全的 HTTP 连接与仓库通信。

authentication

此仓库的认证方案。

credentials

用于向此仓库进行认证的指定类型凭据。

name

此仓库的名称。在一个仓库集合中,名称必须唯一。如果未提供名称,则会为该仓库提供默认名称。

resolve

从此仓库解析构建物时使用的元数据提供者。该提供者负责定位和解释此仓库中包含的模块和构建物的元数据。使用此提供者,您可以微调解析过程。

url

此仓库的基 URL。

方法

方法描述
artifactPattern(pattern)

添加一个独立的模式,该模式将用于在此仓库中定位构建物文件。除非通过 IvyArtifactRepository.ivyPattern(java.lang.String) 提供了特定的 ivy 模式,否则此模式也将用于定位 ivy 文件。如果此模式不是完全限定的 URL,它将被解释为相对于项目目录的文件。它不会被解释为相对于 IvyArtifactRepository.setUrl(java.lang.Object) 中指定的 URL。以这种方式添加的模式将是除通过 IvyArtifactRepository.setUrl(java.lang.Object) 添加的任何基于布局的模式之外的模式。

authentication(action)

配置此仓库的认证方案。

credentials(credentialsType)

配置将由构建提供的此仓库的凭据。

credentials(credentialsType, action)

使用提供的 action 配置此仓库的凭据。

credentials(action)

使用提供的 action 配置此仓库的用户名和密码凭据。

ivyPattern(pattern)

添加一个独立的模式,该模式将用于在此仓库中定位 ivy 文件。如果此模式不是完全限定的 URL,它将被解释为相对于项目目录的文件。它不会被解释为相对于 IvyArtifactRepository.setUrl(java.lang.Object) 中指定的 URL。以这种方式添加的模式将是除通过 IvyArtifactRepository.setUrl(java.lang.Object) 添加的任何基于布局的模式之外的模式。

layout(layoutName)

指定仓库项的组织方式。

metadataSources(configureAction)

配置此仓库的元数据源。此方法将替换任何先前配置的元数据源。

patternLayout(config)

指定仓库项的组织方式。

脚本块

无脚本块

属性详情

boolean allowInsecureProtocol

指定是否允许通过不安全的 HTTP 连接与仓库通信。

出于安全考虑,这特意要求用户逐个案例地选择启用不安全协议。

Gradle 特意不提供允许全局禁用此检查的系统/gradle 属性。

允许通过不安全协议进行通信使得中间人能够冒充目标服务器,并使攻击者能够 将恶意可执行代码注入系统。

另请参见:想要接管 Java 生态系统?你只需要一个 MITM!

AuthenticationContainer authentication (只读)

此仓库的认证方案。

T credentials (只读)

用于向此仓库进行认证的指定类型凭据。

如果未为此仓库分配凭据,则会为此仓库分配并返回指定类型的空凭据集。

String name

此仓库的名称。在一个仓库集合中,名称必须唯一。如果未提供名称,则会为该仓库提供默认名称。

此名称用于日志输出和错误报告,以指向与此仓库相关的信息。

从此仓库解析构建物时使用的元数据提供者。该提供者负责定位和解释此仓库中包含的模块和构建物的元数据。使用此提供者,您可以微调解析过程。

URI url

此仓库的基 URL。

方法详情

void artifactPattern(String pattern)

添加一个独立的模式,该模式将用于在此仓库中定位构建物文件。除非通过 IvyArtifactRepository.ivyPattern(java.lang.String) 提供了特定的 ivy 模式,否则此模式也将用于定位 ivy 文件。如果此模式不是完全限定的 URL,它将被解释为相对于项目目录的文件。它不会被解释为相对于 IvyArtifactRepository.setUrl(java.lang.Object) 中指定的 URL。以这种方式添加的模式将是除通过 IvyArtifactRepository.setUrl(java.lang.Object) 添加的任何基于布局的模式之外的模式。

void authentication(Action<? super AuthenticationContainer> action)

配置此仓库的认证方案。

此方法针对此项目的 AuthenticationContainer 执行给定的 action。 AuthenticationContainer 作为 closure 的 delegate 传递给 closure。

如果未为此仓库分配认证方案,则会根据仓库的传输方案使用一组默认的认证方案。

repositories {
    maven {
        url = "https://example.com/m2"
        authentication {
            basic(BasicAuthentication)
        }
    }
}

支持的认证方案类型扩展自 Authentication

void credentials(Class<? extends Credentials> credentialsType)

配置将由构建提供的此仓库的凭据。

凭据将根据仓库名称从 Gradle 属性中提供。如果无法解析此仓库的凭据,并且该仓库将在当前构建中使用,则构建将无法启动并指向缺失的配置。

repositories {
    maven {
        url = "https://example.com/m2"
        credentials(PasswordCredentials)
    }
}

目前支持以下凭据类型作为 credentialsType 参数

void credentials(Class<T> credentialsType, Action<? super T> action)

使用提供的 action 配置此仓库的凭据。

如果未为此仓库分配凭据,则会将指定类型的一组空凭据分配给此仓库并提供给配置 action。如果已为此仓库指定了凭据,则会将它们传递给给定的配置 action。

repositories {
    maven {
        url = "https://example.com/aws/proxy"
        credentials(AwsCredentials) {
            accessKey = "myAccessKey"
            secretKey = "mySecret"
        }
    }
}

目前支持以下凭据类型作为 credentialsType 参数

void credentials(Action<? super PasswordCredentials> action)

使用提供的 action 配置此仓库的用户名和密码凭据。

如果未为此仓库分配凭据,则会为此仓库分配一组空的用户名和密码凭据,并传递给 action。

repositories {
    maven {
        url = "https://example.com/m2"
        credentials {
            username = 'joe'
            password = 'secret'
        }
    }
}

void ivyPattern(String pattern)

添加一个独立的模式,该模式将用于在此仓库中定位 ivy 文件。如果此模式不是完全限定的 URL,它将被解释为相对于项目目录的文件。它不会被解释为相对于 IvyArtifactRepository.setUrl(java.lang.Object) 中指定的 URL。以这种方式添加的模式将是除通过 IvyArtifactRepository.setUrl(java.lang.Object) 添加的任何基于布局的模式之外的模式。

void layout(String layoutName)

指定仓库项的组织方式。

可识别的值如下:

'gradle'

一个应用以下模式的仓库布局:

  • 构建物:$baseUri/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])
  • Ivy:$baseUri/[organisation]/[module]/[revision]/ivy-[revision].xml
'maven'

一个应用以下模式的仓库布局:

  • 构建物:$baseUri/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier])(.[ext])
  • Ivy:$baseUri/[organisation]/[module]/[revision]/ivy-[revision].xml

遵循 Maven 约定,'organisation' 值会通过将 '.' 替换为 '/' 进行进一步处理。

'ivy'

一个应用以下模式的仓库布局:

  • 构建物:$baseUri/[organisation]/[module]/[revision]/[type]s/[artifact](.[ext])
  • Ivy:$baseUri/[organisation]/[module]/[revision]/[type]s/[artifact](.[ext])

void metadataSources(Action<? super MetadataSources> configureAction)

配置此仓库的元数据源。此方法将替换任何先前配置的元数据源。

void patternLayout(Action<? super IvyPatternRepositoryLayout> config)

指定仓库项的组织方式。

使用提供的 closure 配置布局。

repositories {
    ivy {
        patternLayout {
            artifact '[module]/[revision]/[artifact](.[ext])'
            ivy '[module]/[revision]/ivy.xml'
        }
    }
}

可用的模式标记列在 Ivy 主概念文档中。