hot*_*oup 2 java gradle maven-publish gradle-plugin
我正在尝试使用 Gradle Maven Publish Plugin将我的 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
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用此设置,当我运行时./gradlew publishToMavenLocal:
~/.m2/repository/com/me/my-lib/但没有 pom.xml 并且没有1.0.0.SNAPSHOT附加版本println(...)报告正在发布的 jar 的全名有任何想法吗?
关于#3,要将您的工件安装到本地存储库,您不需要maven-publish插件,而是maven插件
请参阅Maven 插件文档,特别是任务部分和使用它安装到本地存储库部分,您可以运行gradle clean build install
它适用于我的 build.gradle 文件,就像这样简单
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'maven'
Run Code Online (Sandbox Code Playgroud)
请注意,如果您需要发布其他默认生成的 jar 文件,则需要更改archives配置
关于#1附加时间戳,将版本行移到 jar 子句之外并将其从
version = '1.0.0-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)
到
version = "1.0-SNAPSHOT-${System.currentTimeMillis()}"
Run Code Online (Sandbox Code Playgroud)
这是使用 Groovy GString(AKA 字符串插值 -请注意从单引号到双引号的更改)将当前时间以毫秒为单位附加到版本
最后但并非最不重要的一点是,关于#2打印 jar 全名,将以下内容附加到 build.gradle 文件中
install.doLast {
println jar.archiveName
}
Run Code Online (Sandbox Code Playgroud)
本质上,我们将 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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4567 次 |
| 最近记录: |