asciidoctor-gradle-plugin
                                
                                 asciidoctor-gradle-plugin copied to clipboard
                                
                                    asciidoctor-gradle-plugin copied to clipboard
                            
                            
                            
                        asciidotor added twice to distribution
When I create a distribution of my application using Gradle Application, which includes the output of the asciidoctor task, it is added twice.
plugins {
    id 'org.asciidoctor.jvm.convert' version '2.2.0'
}
apply plugin: 'application'
repositories {
    mavenCentral()
}
dependencies {
    implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.12.1'
    implementation 'org.apache.commons:commons-text:1.8'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
jar {
    from sourceSets.main.allJava
}
mainClassName = "dk.kec.MyApp"
distributions {
    main.contents {
        from(asciidoctor) {
            into 'docs'
        }
    }
}
asciidoctor {
    sourceDir file('docs')
    sources {
        include 'readme.adoc'
    }
    outputDir file("$buildDir/asciidoc")
}
Im on Window 10. Gradle 6.0.1 Java 8.0.231
Not sure what is happening there as it soudns like it should just work. I'll take a look.
The problem can be replicated on MacOS too. Using the build file above on a sample project yields
$ unzip -l build/distributions/foo.zip 
Archive:  build/distributions/foo.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  11-29-2019 21:31   foo/
        0  11-29-2019 21:31   foo/lib/
      855  11-29-2019 21:31   foo/lib/foo.jar
    23518  11-29-2019 21:29   foo/lib/log4j-slf4j-impl-2.12.1.jar
   207030  11-29-2019 21:29   foo/lib/commons-text-1.8.jar
    41203  11-29-2019 21:29   foo/lib/slf4j-api-1.7.25.jar
  1674433  11-29-2019 21:29   foo/lib/log4j-core-2.12.1.jar
   276771  11-29-2019 21:29   foo/lib/log4j-api-2.12.1.jar
   503880  10-14-2019 10:22   foo/lib/commons-lang3-3.9.jar
        0  11-29-2019 21:31   foo/bin/
     3039  11-29-2019 21:31   foo/bin/foo.bat
     5857  11-29-2019 21:31   foo/bin/foo
        0  11-29-2019 21:31   foo/docs/
    31042  11-29-2019 21:31   foo/docs/readme.html
    31042  11-29-2019 21:31   foo/docs/readme.html
---------                     -------
  2798670                     15 files
$ tree build
build
├── asciidoc
│   └── readme.html
├── classes
│   └── java
│       └── main
│           └── Foo.class
├── distributions
│   └── foo.zip
├── generated
│   └── sources
│       └── annotationProcessor
│           └── java
│               └── main
├── libs
│   └── foo.jar
├── scripts
│   ├── foo
│   └── foo.bat
└── tmp
    ├── asciidoctor.javaexec-data
    └── jar
        └── MANIFEST.MF
Note that readme.html exists only once in the build directory but it's added twice to the zip file.
Tried different versions of Gradle from 6.0.1 all the way back to 4.0 (3.5 doesn't seem to work with asciidoctor-gradle 2.2.0) and all of them generate a duplicate entry in the zip file. I thought that the application plugin was at fault as there were updates to it in the middle of Gradle 4.x and a full revamp in 5.x but no, there's something odd going on here.
It seams that asciidoctor declares twice the output path.
With Gradle 6.0 this warning was added:
> Task :distTar
Copying or archiving duplicate paths with the default duplicates strategy has been deprecated. This is scheduled to be removed in Gradle 7.0. Duplicate path: "catalog-export-1.0/docs/catalog-export.html". Explicitly set the duplicates strategy to 'DuplicatesStrategy.INCLUDE' if you want to allow duplicate paths.
The problem seems to be fixed since Gradle 6.6. I can reproduce the issue only with Gradle 6.5.1 or below.
For 6.5.1 or below, a workaround is to write from(asciidoctor.outputdir) and to make the dependency, which is implicit in from(asciidoctor), explicit.