jenkins - 如何将Groovy中的集中化依赖项数组转换为Kotlin?

标签 jenkins gradle groovy kotlin dependencies

在Groovy脚本中,我可以将数组中的依赖项列表分配为“implementation library.frameworkLibs”,kotlin中是否存在类似的方法?

目标是在数组中具有依赖项列表,以便可以在子项目中单独分配每个列表。

plugins {
    id 'org.springframework.boot' version '2.1.4.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

sourceCompatibility = '1.8'

/* 1. centerilize dependencies for all projects */
ext.libraries = [
    frameworkLibs: [
        'org.springframework.boot:spring-boot-starter-data-redis',
        'org.springframework.boot:spring-boot-starter-web',
        'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1',
        'org.springframework.kafka:spring-kafka'
    ],
    testLibs: [
        'org.springframework.boot:spring-boot-starter-test',
        'org.springframework.kafka:spring-kafka-test'
    ],
    sqlLibs: [
        'org.postgresql:postgresql'
    ]
]

allprojects {
    group = 'com.example'
    version = '0.0.1-SNAPSHOT'

    repositories {
        mavenCentral()
    }

    dependencies {
        /* 2. establish dependencies */
        implementation libraries.frameworkLibs
        runtimeOnly libraries.sqlLibs
        testImplementation libraries.testLibs
    }
}

最佳答案

您可以将依赖关系图更改为:

val libraries by extra {
    mapOf(
            "frameworkLibs" to listOf(
                    "org.springframework.boot:spring-boot-starter-data-redis",
                    "org.springframework.boot:spring-boot-starter-web",
                    "org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1",
                    "org.springframework.kafka:spring-kafka"
            )
    )
}

然后在您的依赖项块中,它必须是:
    libraries["frameworkLibs"]?.forEach { s -> implementation(s) }

您可以将扩展方法作为buildSrc脚本的一部分添加到Project中,以隐藏此forEach以使依赖项正常工作...

关于jenkins - 如何将Groovy中的集中化依赖项数组转换为Kotlin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034519/

相关文章:

java - 如何启动 Jetty Embedded 作为 Jenkins 构建的一部分

groovy - fork 的groovyc返回错误代码:-1073741819

android - 如何从build.gradle根文件向Android Gradle子项目添加javadoc任务?

grails - Grails <g:select>出现问题

ant - 如何将Ant属性转换为Ant资源?

grails - 具有逻辑OR的Grails可搜索插件

maven - 如何使用 Jenkins 部署 Spring Boot Maven 应用程序?

jenkins - 具有动态矩阵轴值的声明式管道

php - Jenkins 和 PHP 项目的 Jenkins 作业模板

gradle - 使用Gradle将文件上传到Artifactory,无需发布Maven