Hemanth Sai Veluvolu
04/02/2024, 7:26 AMfun RepositoryHandler.myGithubPackages(
repoName: String,
contentFilter: InclusiveRepositoryContentDescriptor.() -> Unit
) = exclusiveContent {
forRepositories(
maven {
name = "${repoName}Packages"
url = uri("<https://maven.pkg.github.com/myOrg/$repoName>")
}
)
filter(contentFilter)
}
// Example Usage
repositories {
myGithubPackages("myRepo") {
includeGroup("artifact.group")
}
}
Vampire
04/02/2024, 7:32 AMHemanth Sai Veluvolu
04/02/2024, 8:03 AMVampire
04/02/2024, 8:37 AMHemanth Sai Veluvolu
04/03/2024, 8:22 AMallprojects {
repositories.ext.myPackages = { repoName, contentFilter ->
repositories.exclusiveContent {
forRepository(repositories.maven {
name = "${repoName}-packages"
url = uri("<https://maven.pkg.github.com/myName/$repoName>")
credentials {
username = guser
password = gtoken
}
})
filter(contentFilter)
}
}
@Vampire is this close to what you were suggesting?Vampire
04/03/2024, 8:41 AMext
are "extra" properties. Using those is practically always a work-around for not doing something properly.
And besides that, allprojects { ... }
and other means of doing cross-project configuration is highly discouraged as it adds project coupling and works against some more sophisticated features and optimizations.Vampire
04/03/2024, 8:41 AMHemanth Sai Veluvolu
04/03/2024, 8:51 AMVampire
04/03/2024, 8:57 AMabstract class MyExtension(val repositories: RepositoryHandler) : ExtensionAware {
fun myPackages() {
repositories.maven("<https://foo.example.com>")
}
}
(repositories as ExtensionAware).extensions.create<MyExtension>("myExtension", repositories)
=>
repositories {
myExtension.myPackages()
myExtension {
myPackages()
}
}