不同依赖管理器(例如 Maven,Gradle)依赖语法之间的映射

Mapping between different depencendy managers' (e.g. Maven, Gradle) dependency syntax

当我浏览 MvnRepository 时,我注意到了一个规律。例如,如果我想使用 Spring Framework:

使用 Maven 我需要添加:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6.SEC03</version>
</dependency>

使用Gradle我需要添加:

'org.springframework:spring:2.5.6.SEC03'

所以我得出的结论是如果groupId = A, artifactId = B, version = C 在 Maven 中,我必须像 'A:B:C' 在 Gradle 中那样表达它。 我注意到 Ivy、Grape、Buildr、SBT、Leiningen 语法有类似的模式。

它总是规则还是只是 MvnRepository 的东西?例如,这里是 JLIBSVM 可以在自定义存储库中找到,并且在网页上仅给出了如何将其与 Maven 一起使用。它与所有这些其他依赖管理器兼容吗?

是的,虽然周围还有一些修饰符

您也可以在 Gradle 中使用此语法:

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
}

还有像这样的其他变体:

dependencies {
    compile (
        [group: 'foo', name: 'foo', version: '0.1'],
        [group: 'bar', name: 'bar', version: '0.1']
    )
}

此外,并非所有部分都是必需的。例如,如果您在系统的平面目录中只有一个 jar 文件,您可以说:

runtime name: 'name'

请注意省略了 jar 前缀。

Gradle 和大多数其他依赖项管理器支持声明存在于 Maven 存储库中的依赖项,因为 Maven 无处不在。您提到的项目确实托管在 Maven 存储库中,而不是您可能习惯的 Maven Central。例如,当使用 Gradle 时,您必须在 repositories 部分中指明要使用哪个 Maven 存储库。