发布Gradle个版本目录到maven本地
Publishing Gradle version catalog to maven local
我正在尝试将 gradle 版本目录发布到 mavenLocal 存储库,以便在多个项目之间共享版本。
TLDR; project on github 发布版本目录不起作用。
我是按照官方的描述做的docs。
在我的 ./gradle 文件夹中,我有一个描述我的版本目录的 *.toml 文件。
通过
导入成功
// settings.gradle.kts
rootProject.name = "gradle-version-catalogs"
enableFeaturePreview("VERSION_CATALOGS")
dependencyResolutionManagement {
versionCatalogs {
create("quarkus") {
from(files("gradle/quarkus.versions.toml"))
}
}
}
构建脚本如下所示:
// build.gradle.kts
group = "de.lj"
version = "1.0-SNAPSHOT"
plugins {
`version-catalog`
`maven-publish`
}
publishing {
publications {
create<MavenPublication>("quarkus") {
println("Version Catalogs:")
versionCatalogs.catalogNames.forEach { println(it) }
from(components["versionCatalog"])
}
}
}
运行 gradle 发布任务导致工件 de.lj.gradle.version-catalogs:1.0-SNAPSHOT 被发布到我的 mavenLocal 存储库。但是没有我想创建的 de.lj.quarkus。
我正在使用 gradle 版本 7.3.3 和插件版本目录、maven-publish。我将我的项目推送到 github.
非常感谢任何帮助!
解决方案:块
// settings.gradle.kts
versionCatalogs {
...
}
仅用于导入已发布版本目录的项目。在定义版本目录的项目中不需要它。
而是从 *.toml 文件构建版本目录:
// build.gradle.kts
catalog {
versionCatalog {
from(files("./gradle/quarkus.versions.toml"))
}
}
为了使用坐标 ${my.groupId}:${my.artifactId}:${my.version} set
将版本目录发布到 mavenLocal
// settings.gradle.kts
rootProject.name = "${my.groupId}"
// build.gradle.kts
group = "${my.groupId}"
version = "${my.version}"
其他项目现在可以通过
引用版本目录
// settings.gradle.kts
rootProject.name = "version-catalog-import"
enableFeaturePreview("VERSION_CATALOGS")
dependencyResolutionManagement {
repositories {
mavenLocal()
}
versionCatalogs {
create("${my.reference}").from("${my.groupId}:${my.artifactId}:${my.version}")
}
}
// build.gradles.kts
plugins {
`kotlin-dsl`
`version-catalog`
}
dependencies {
implementation(${my.reference})
}
按照这个差不多就可以了,问题是发布的TOML文件是空的。
我设法让它工作,在“build.gradle.kts”中添加以下代码:
catalog {
versionCatalog {
from(files("./gradle/quarkus.versions.toml"))
}
}
所以整个文件结尾为:
/// build.gradle.kts
group = "de.lj"
version = "1.0-SNAPSHOT"
plugins {
`version-catalog`
`maven-publish`
}
catalog {
versionCatalog {
from(files("gradle/quarkus.versions.toml"))
}
}
publishing {
publications {
create<MavenPublication>("quarkus") {
from(components["versionCatalog"])
}
}
}
此外,我们可以删除“settings.gradle.kts”中的这段代码:
dependencyResolutionManagement {
versionCatalogs {
create("quarkus") {
from(files("gradle/quarkus.versions.toml"))
}
}
}
导致:
/// settings.gradle.kts
rootProject.name = "gradle-version-catalogs"
enableFeaturePreview("VERSION_CATALOGS")
有了这些,我就可以使用其他项目发布的版本目录了。
我正在尝试将 gradle 版本目录发布到 mavenLocal 存储库,以便在多个项目之间共享版本。
TLDR; project on github 发布版本目录不起作用。
我是按照官方的描述做的docs。
在我的 ./gradle 文件夹中,我有一个描述我的版本目录的 *.toml 文件。
通过
导入成功// settings.gradle.kts
rootProject.name = "gradle-version-catalogs"
enableFeaturePreview("VERSION_CATALOGS")
dependencyResolutionManagement {
versionCatalogs {
create("quarkus") {
from(files("gradle/quarkus.versions.toml"))
}
}
}
构建脚本如下所示:
// build.gradle.kts
group = "de.lj"
version = "1.0-SNAPSHOT"
plugins {
`version-catalog`
`maven-publish`
}
publishing {
publications {
create<MavenPublication>("quarkus") {
println("Version Catalogs:")
versionCatalogs.catalogNames.forEach { println(it) }
from(components["versionCatalog"])
}
}
}
运行 gradle 发布任务导致工件 de.lj.gradle.version-catalogs:1.0-SNAPSHOT 被发布到我的 mavenLocal 存储库。但是没有我想创建的 de.lj.quarkus。
我正在使用 gradle 版本 7.3.3 和插件版本目录、maven-publish。我将我的项目推送到 github.
非常感谢任何帮助!
解决方案:块
// settings.gradle.kts
versionCatalogs {
...
}
仅用于导入已发布版本目录的项目。在定义版本目录的项目中不需要它。 而是从 *.toml 文件构建版本目录:
// build.gradle.kts
catalog {
versionCatalog {
from(files("./gradle/quarkus.versions.toml"))
}
}
为了使用坐标 ${my.groupId}:${my.artifactId}:${my.version} set
将版本目录发布到 mavenLocal// settings.gradle.kts
rootProject.name = "${my.groupId}"
// build.gradle.kts
group = "${my.groupId}"
version = "${my.version}"
其他项目现在可以通过
引用版本目录// settings.gradle.kts
rootProject.name = "version-catalog-import"
enableFeaturePreview("VERSION_CATALOGS")
dependencyResolutionManagement {
repositories {
mavenLocal()
}
versionCatalogs {
create("${my.reference}").from("${my.groupId}:${my.artifactId}:${my.version}")
}
}
// build.gradles.kts
plugins {
`kotlin-dsl`
`version-catalog`
}
dependencies {
implementation(${my.reference})
}
按照这个差不多就可以了,问题是发布的TOML文件是空的。 我设法让它工作,在“build.gradle.kts”中添加以下代码:
catalog {
versionCatalog {
from(files("./gradle/quarkus.versions.toml"))
}
}
所以整个文件结尾为:
/// build.gradle.kts
group = "de.lj"
version = "1.0-SNAPSHOT"
plugins {
`version-catalog`
`maven-publish`
}
catalog {
versionCatalog {
from(files("gradle/quarkus.versions.toml"))
}
}
publishing {
publications {
create<MavenPublication>("quarkus") {
from(components["versionCatalog"])
}
}
}
此外,我们可以删除“settings.gradle.kts”中的这段代码:
dependencyResolutionManagement {
versionCatalogs {
create("quarkus") {
from(files("gradle/quarkus.versions.toml"))
}
}
}
导致:
/// settings.gradle.kts
rootProject.name = "gradle-version-catalogs"
enableFeaturePreview("VERSION_CATALOGS")
有了这些,我就可以使用其他项目发布的版本目录了。