Gradle 格拉德:有点像Maven父母POM

Gradle 格拉德:有点像Maven父母POM,gradle,parent-pom,Gradle,Parent Pom,在我们公司,许多不同的项目使用相似的技术堆栈,并将有许多共同的特点。 因此,我们希望在一个公共文件中维护公共特性、依赖项等,并在其他项目中引用它。 在maven中,这类似于使用公共依赖信息创建一个单独的maven项目,并在其他项目中将其称为 我想做一些类似于gradle中maven父项目的事情,它可以被所有不同的项目使用。 我在谷歌上搜索过,但找不到关于如何做到这一点的简明信息。 我们不允许使用外部第三方插件 如果有人能解释一下如何做到这一点,那就太好了。在gradle中,你可以做到这一点,但要

在我们公司,许多不同的项目使用相似的技术堆栈,并将有许多共同的特点。 因此,我们希望在一个公共文件中维护公共特性、依赖项等,并在其他项目中引用它。 在maven中,这类似于使用公共依赖信息创建一个单独的maven项目,并在其他项目中将其称为

我想做一些类似于gradle中maven父项目的事情,它可以被所有不同的项目使用。 我在谷歌上搜索过,但找不到关于如何做到这一点的简明信息。 我们不允许使用外部第三方插件


如果有人能解释一下如何做到这一点,那就太好了。

在gradle中,你可以做到这一点,但要做到这一点,你需要有外部插件,否则至少目前是不可能的。我是这样做到的:

buildscript {
repositories { jcenter() }

    dependencies {
        classpath 'com.netflix.nebula:nebula-dependency-recommender:4.3.0'
    }
}

allprojects {
    apply plugin: 'nebula.dependency-recommender'
    apply plugin: 'groovy'
    apply plugin: 'java'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenCentral()
        jcenter()

        maven { url "http://repo1.maven.org/maven2/" }
        maven { url "REPOSITORY_OF_YOUR_PARENT_POM.XML" }
    }

    dependencyRecommendations {
        mavenBom module: 'YOUR_PARENT_POM_GROUP:YOUR_PARENT_POM_ID:YOUR_PARENT_POM_VERSION'
    }
}
其中:
存储库\u您的\u父项\u POM.XML-任何系统,如nexus或maven可以访问的其他系统
您的家长POM组-您的家长POM项目组(例如com.foo.bar.PARENT)
您的家长家长家长ID-您的家长家长家长ID(例如项目家长)
您的家长POM版本-您的家长POM项目版本(例如1.0.1)


因此,如果netflix.nebula的外部依赖性很好,那么您可以这样做

Gradle有许多扩展机制来利用位于主脚本之外的构建逻辑

可以做的一件简单的事情是使用外部构建脚本,该脚本可以来自本地文件系统或通过URL,请参阅

如果这个解决方案出现了太多问题,那么您可以着手打包一个其他人可以应用并可能配置的真正插件


这将允许您配置更多的依赖项,例如。

我在这里找到了最佳解决方案: