我有使用kotlin-script配置的gradle多模块项目。我想将发布添加到maven存储库,我找到了maven-publish
插件。但它似乎跳过了为每个项目配置的版本:
MyProject/build.gradle.kts
:
subprojects {
apply {
plugin("maven-publish")
}
configure<PublishingExtension>() {
publications {
repositories { ... }
create<MavenPublication>("myPublication") {
from(components.getByName("java"))
logger.lifecycle("test: ${project.group} ${project.name} ${project.version}")
}
}
MyProject/subproject1/build.gradle.kts
:
version = "1.0.0-SNAPSHOT"
gradle publish
输出:
test: my.project subproject1 unspecified
artifact file does not exist: '.../MyProject/subproject1/build/libs/subproject1.jar'
文件subproject1.jar
不存在,但subproject1-1.0.0-SNAPSHOT.jar
确实存在。如何让gradle获得正确版本的模块?
答案 0 :(得分:0)
我在使用maven-publish
插件时发现了类似的问题:
我试图根据gradle docs here和this answer中所述的项目版本来设置存储库URL
。
但是我发现version
始终解析为默认值(未设置)(如问题中所示): unspecified
。
因此,我想这些文档示例仅用于项目的
build.gradle
,而不是常规的gradle
脚本。
无论如何,我相信问题是由于gradle
脚本中的块的执行时间引起的。无法在我想要的位置访问project.version
。因此,我最终使用gradlew
标志将参数传递给-Pparameter
命令。
Gradle有一个
configuration
和一个execution
阶段。请参阅文档:
关于您的问题,可能与我描述的相同,或者原因可能更简单:
gradle
文件的结构来看,它似乎与maven-publish documentation中指定的层次结构不匹配。特别是,repositories {}
块应与publications {}
处于同一级别,而不是在其内部。可能相关: