在build.gradle中如何提取并重用Maven仓库配置?

问题描述 投票:0回答:2

我有这个

build.gradle
文件:

repositories {
    maven {
        credentials {
            username "$artifactory_user"
            password "$artifactory_password"
        }
        url 'http://some.domain/artifactory/repo'
    }
}

publishing {
    repositories {
        publications {
            maven(MavenPublication) {
                from components.java
            }
        }
        maven {
            credentials {
                username "$artifactory_user"
                password "$artifactory_password"
            }
            url 'http://some.domain/artifactory/repo'
        }
    }
}

我想提取并重用 Maven 存储库定义。

这不起作用:

repositories {
    mavenRepository()
}

publishing {
    repositories {
        publications {
            maven(MavenPublication) {
                from components.java
            }
        }
        mavenRepository()
    }
}

private void mavenRepository() {
    maven {
        credentials {
            username "$artifactory_user"
            password "$artifactory_password"
        }
        url 'http://some.domain/artifactory/repo'
    }
}

结果是

无法找到参数 [gradle-dev] 的方法 mavenRepository() 存储库容器类型 org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler。

我怎样才能实现这个目标?

gradle groovy closures build.gradle
2个回答
3
投票

假设您有一个单独的 repositories.gradle 文件并命名您的 Maven 存储库..

maven {
    name 'myrepo'
    url 'https://xxxx'
    credentials {
        username = System.getenv("xxx") ?: "${xxx}"
        password = System.getenv("xxx") ?: "${xxx}"
    }
}
maven { name 'anotherrepo' }

然后在根项目级别您可以运行:

apply from: "$rootDir/gradle/repositories.gradle"

这将使用所有存储库填充存储库。然后要在其他地方使用填充特定的一个,您可以使用:

repositories.add(rootProject.repositories.getByName('myrepo'))

我在此博客页面上找到了答案:https://themightyprogrammer.dev/snippet/reusing-gradle-repo 感谢可能的程序员!


0
投票

使用 Gradle 8,如果您有根 build.gradle.kts 和子项目 build.gradle.kts,则可以在根中定义存储库,如下所示:

subprojects {
   publishing {
      repositories {
         maven {
            name = "MyRepo"
            ... 
         }
      }
   }
}

以及子项目的build.gradle.kts

publishing {
   publications {
      create<MavenPublication>("maven") {
         groupId = ...
         ...
      }
   }
}

您的

gradle <submodule>:tasks
现在应该包含一个publishMavenPublicationsToGithubPackagesRepository'任务

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.