Search code examples
javagradlebuild.gradlegradle-kotlin-dsl

Add classpath in manifest using Gradle


I would like my Gradle build script to add the complete Classpath to the manifest file contained in JAR file created after the build.

Example:

Manifest-Version: 1.0
Class-Path: MyProject.jar SomeLibrary.jar AnotherLib.jar

My build script already add some information to the manifest this way:

jar {
    manifest {
        attributes("Implementation-Title": project.name,
            "Implementation-Version": version,
            "Main-Class": mainClassName,
    }
}

How do I get the list of dependencies to add to the manifest?


This page of Java tutorials describes more in detail how and why adding classpath to the manifest: Adding Classes to the JAR File's Classpath


Solution

  • Found a solution on Gradle's forum:

    jar {
      manifest {
        attributes(
          "Class-Path": configurations.compile.collect { it.getName() }.join(' '))
      }
    }
    

    Source: Manifest with Classpath in Jar Task for Subprojects