[英]Gradle's Maven Publish plugin not publishing POM or proper version to Maven Local
我正在尝试使用Gradle Maven Publish插件将我的Java库的快照版本发布到我的本地Maven仓库,这样:
1.0.0.SNAPSHOT-<timestamp>
,其中<timestamp>
是在米利斯当前系统时间(类似于像 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(...)
来报告正在发布的jar的全名 有任何想法吗?
关于#3 ,要将工件安装到本地存储库,您不需要maven-publish
插件,而是maven
插件
请参阅Maven插件文档,特别是Tasks部分和使用它安装到本地存储库部分 ,您可以运行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(如果你想要别的东西,请看这里 )
总而言之,我的build.gradle文件如下所示:
group 'com.boazj'
version "1.0-SNAPSHOT-${System.currentTimeMillis()}"
apply plugin: 'java'
apply plugin: 'maven'
install.doLast {
println jar.archiveName
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.