Gradle Maven发布到delombok的源代码

Jar*_*icz 8 nexus gradle lombok build.gradle maven-publish

我正在使用以下设置:

  • Gradle 5.2.1
  • 关系发布
  • 龙目岛1.18.6
  • lombok gradle插件io.freefair.lombok 3.1.4

我想在delombok完成后将sourceJar上传到联系。

对于Maven发布,我使用以下内容:

task javadocJar(type: Jar) {
    from javadoc.destinationDir
    classifier = 'javadoc'
}
task sourcesJar(type: Jar) {
    from sourceSets.main.allJava
    classifier = 'sources'
}
Run Code Online (Sandbox Code Playgroud)

...

publications {
        maven(MavenPublication) {
            from components.java
            artifact sourcesJar
            artifact javadocJar
        }
    }
Run Code Online (Sandbox Code Playgroud)

上传到nexus的资源与我的原始资源只是一对一的。如何更改配置,以使上传的源成为delombok源?

Chr*_*iki 7

这是一个独立的示例,它生成所需的 delomboked 源 JAR 并将其发布到 Maven 存储库(使用./gradlew publishMavenPublicationToMyRepoRepository):

plugins {
  id 'java'
  id 'maven-publish'
  id 'io.freefair.lombok' version '3.1.4'
}

group = 'com.example'
version = '0.1'

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.6'
    annotationProcessor 'org.projectlombok:lombok:1.18.6'
}

task javadocJar(type: Jar) {
  from javadoc.destinationDir
  classifier = 'javadoc'
}

task sourcesJar(type: Jar) {
  ///////////////////////////////////////////////
  // This is the relevant change:
  from sourceSets.main.delombokTask
  ///////////////////////////////////////////////
  classifier = 'sources'
}

publishing {
  repositories {
    maven {
      name = 'myRepo'
      url = 'file:///tmp/myRepoDir'
    }
  }
  publications {
    maven(MavenPublication) {
      from components.java
      artifact sourcesJar
      artifact javadocJar
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,该示例不使用“nexus 发布”,而是简单地发布到一个简单的文件系统存储库。据我了解您的问题,实际上传不是问题,而是创建 delomboked 源 JAR。

  • Kotlin 示例: `task<Jar>("sourcesJar") { archiveClassifier.set("sources") from(project.extensions.getByType<SourceSetContainer>()["main"].extensions["delombokTask"]) }` (2认同)