Java 格拉德尔';s Maven发布插件未将POM或正确版本发布到Maven Local

Java 格拉德尔';s Maven发布插件未将POM或正确版本发布到Maven Local,java,gradle,gradle-plugin,maven-publish,Java,Gradle,Gradle Plugin,Maven Publish,我正试图让Gradle将Java库的快照版本发布到本地Maven repo,以便: jar的版本是1.0.0.SNAPSHOT-,其中是以毫秒为单位的当前系统时间(类似于system.currentTimeInMillis());及 我将发布的jar的全名记录到STDOUT/console,包括上面的版本;及 一个格式正确的pom.xml被发布到jar旁边的Maven local,这样任何其他Gradle/Maven项目都可以在本地“下拉”并正确获取其可传递的依赖项 我迄今为止最好的尝试是: p

我正试图让Gradle将Java库的快照版本发布到本地Maven repo,以便:

  • jar的版本是
    1.0.0.SNAPSHOT-
    ,其中
    是以毫秒为单位的当前系统时间(类似于
    system.currentTimeInMillis()
    );及
  • 我将发布的jar的全名记录到STDOUT/console,包括上面的版本;及
  • 一个格式正确的pom.xml被发布到jar旁边的Maven local,这样任何其他Gradle/Maven项目都可以在本地“下拉”并正确获取其可传递的依赖项
  • 我迄今为止最好的尝试是:

    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 publishtoavenlocal

    • 我确实看到jar被部署到
      ~/.m2/repository/com/me/my lib/
      ,但没有添加pom.xml和
      1.0.0.SNAPSHOT
      版本
    • 我甚至不知道如何/在哪里将时间戳附加到版本上
    • 我甚至不知道如何/在哪里执行
      println(…)
      来报告正在发布的jar的全名
    有什么想法吗?

    关于#3,要将您的工件安装到本地存储库,您不需要
    maven publish
    插件,而需要
    maven
    插件

    使用它,您可以运行
    gradle clean build安装

    对于我来说,build.gradle文件就是这么简单

    version '1.0-SNAPSHOT'
    
    apply plugin: 'java'
    apply plugin: 'maven'
    
    注意,如果您需要发布默认生成的jar之外的内容,那么您需要更改
    存档
    配置


    关于添加时间戳的#1,将版本行移到jar子句之外,并将其从

    version = '1.0.0-SNAPSHOT'
    

    这是使用Groovy GString(也称字符串插值-注意从单引号到双引号的变化)将当前时间(以毫秒为单位)附加到版本中


    最后但并非最不重要的一点是,关于打印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
    }
    
    group 'com.boazj'
    version "1.0-SNAPSHOT-${System.currentTimeMillis()}"
    
    apply plugin: 'java'
    apply plugin: 'maven'
    
    install.doLast {
            println jar.archiveName
    }