我正在尝试让Gradle Maven Publish Plugin将Java库的快照版本发布到本地Maven存储库中,以便:
1.0.0.SNAPSHOT-<timestamp>
,其中<timestamp>
是当前系统时间,以毫秒为单位(类似于 like System.currentTimeInMillis()
);和到目前为止我最大的尝试:
plugins {
id 'java-library'
id 'maven-publish'
}
dependencies {
compile(
'org.hibernate:hibernate-core:5.0.12.Final'
,'com.fasterxml.jackson.core:jackson-core:2.8.10'
,'com.fasterxml.jackson.core:jackson-databind:2.8.10'
,'com.fasterxml.jackson.core:jackson-annotations:2.8.0'
)
testCompile(
'junit:junit:4.12'
)
}
repositories {
jcenter()
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
group 'com.me'
jar {
baseName = 'my-lib'
version = '1.0.0-SNAPSHOT'
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
但是,使用此设置,当我运行./gradlew publishToMavenLocal
时:
~/.m2/repository/com/me/my-lib/
,但是没有pom.xml并且没有附加1.0.0.SNAPSHOT
版本println(...)
来报告正在发布的罐子的全名有什么想法吗?
答案 0 :(得分:3)
关于#3 ,要将工件安装到本地存储库中,不需要maven-publish
插件,而需要maven
插件
查看The Maven plugin documentation, specifically the Tasks section and the Installing to the local repository section,您可以运行gradle clean build install
它对我来说很简单,只需一个build.gradle文件
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'maven'
请注意,如果您需要发布除默认生成的jar之外的其他内容,则需要更改archives
配置
关于#1 附加时间戳,将版本行移到jar子句之外,并将其更改为
version = '1.0.0-SNAPSHOT'
到
version = "1.0-SNAPSHOT-${System.currentTimeMillis()}"
这是使用Groovy GString(AKA字符串插值-注意从单引号到双引号的更改)将当前时间(以毫秒为单位)附加到版本中
最后但并非最不重要的,关于#2 打印jar的全名,将以下内容附加到build.gradle文件中
install.doLast {
println jar.archiveName
}
本质上,我们要在安装任务(我的答案顶部执行的任务)的后面附加jar配置的archiveName的println(如果需要其他内容,请参见here)
所以我所有的build.gradle文件都看起来像这样:
group 'com.boazj'
version "1.0-SNAPSHOT-${System.currentTimeMillis()}"
apply plugin: 'java'
apply plugin: 'maven'
install.doLast {
println jar.archiveName
}