Publishing sources jar to Ivy with separate configuration

Hi,

I’m publishing a third party jar and a subset of sources to our Artifactory gradle repository with the following build script:

apply plugin: 'ivy-publish'

group = 'com.group'
version = libversion

publishing {
    publications {
        lib(IvyPublication) {
            module 'lib'
            artifact file("$buildDir/lib.jar")
            artifact source: libSourcesJar, type: 'source'
        }
    }
    repositories {
        ivy {
            url "http://localhost:8082/artifactory/ext-release-local"
        }
    }    
}

For projects that require these dependencies, I just have a simple build script like so:

apply plugin: 'java'

repositories {
    ivy {
        url "http://localhost:8082/artifactory/ext-release-local"
    }
}

dependencies {
    compile 'com.group:lib:libversion'
}

This works, but the problem is that in eclipse, the source jar gets added to the classpath separately as if it were a library jar itself.

I’ve looked at the docs for modules with multiple artifacts, and it looks like the solution is to put the source jar in a configuration other than default.

I attempted to set the sources jar to a different configuration with this:

publishing {
    publications {
        lib(IvyPublication) {
            module 'lib'
            configurations {
                runtime
            }
            artifact file("$buildDir/lib.jar")
            artifact source: libSourcesJar, type: 'source', conf: 'runtime'
        }

This publishes fine, but when my other projects try to resolve the dependencies I get errors that the default configuration is missing.

So I tried adding a default configuration, but default is a reserved word in groovy, so I had to end up with this:

publishing {
    publications {
        lib(IvyPublication) {
            module 'lib'
            configurations {
                it."default"
                runtime
            }
            artifact source: file("$buildDir/lib.jar"), conf: 'default'
            artifact source: libSourcesJar, type: 'source', conf: 'runtime'
        }

This now technically works, but it feels kind of hacky. I’ve looked at examples in the docs, and they don’t seem to have to declare a default configuration as I have. Is there something I’m overlooking? What’s the correct way to handle this?

Thanks,