How do I use bin.zip files from a flat file repository?


(Povl Kvols) #1

Hi there

I’m trying to create and use a flat file repository for varoius dependencies. But for some reason, I cannot make it work when using …bin.zip files, (such as apache-ant-1.7.0.bin.zip in my example below)

It appears that Gradle finds the file, but the java compilation fails because it cannot find the relevant jar and class files.

apply plugin: 'java'
  def File artifactRepositoryRoot = new File('some local file path')
  repositories {
    flatDir dirs: [
         "${artifactRepositoryRoot}" // containing the file apache-ant-1.7.0-bin.zip and commons-email-1.2.jar
    ]
}
  dependencies {
    compile name: 'apache-ant', version: '1.7.0', classifier: 'bin', ext: 'zip'
    compile name: 'commons-email', version: '1.2'
}
  task listJars << { // Does list both apache-ant-1.7.0-bin.zip and commons-email-1.2.jar with correct path
    println()
    println '-------
Jars for compile time: -------------'
    configurations.compile.each { file -> println file.absolutePath }
    println '---------------------------------------------'
}

Help urgently needed - thank you in advance!

// Povl


(Peter Niederwieser) #2

You need to put the Jar(s) on the class path, not the zip that contains them. Best put the Jars into the flat dir repository to begin with.


(Povl Kvols) #3

Thank you for your quick reply, Peter. It’s highly appreciated!

I can see that it works if I unzip the apache-ant-1.7.0.bin.zip -file myself and point to its lib directory. It’s certainly also an easy way to “harvest” various libraries.

Still, shouldn’t the classifier: ‘bin’, ext: ‘zip’ work in the above, or does these parameters serve another purpose? (I’m new to Gradle and Groovy, so pardon my lack of knowledge her)

Thanks again.

// Povl


(Peter Niederwieser) #4

‘classifier’ and ‘ext’ are just for telling Gradle which artifact you want. There are no further semantics associated with them.