Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure gradle to use a local repository only for certain dependency groups?

Tags:

java

gradle

ivy

Working off the gradle dependency docs, we have a build.gradle with snippets like this.

repositories {
    mavenCentral()
    ivy {
        name = 'localRepo'
        artifactPattern "http://localRepo.com/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
    }
}

dependencies {
    compile group: 'localRepo', name: 'my-private-library', version: '2.5'
}

This setup does download everything correctly, but I would like to tweak it so that things in group localRepo are only attempted to be pulled from the ivy repository and localRepo is only used for group localRepo. localRepo only holds private jars so we do not want it to be used as the first repo and we do not want to spend a long time querying mavenCentral for jars that will not exist.

Basically I would like to say in the dependency to use a specific repo or that the local ivy repo is only to be used for specific groups. Is there an easy way to do this?

like image 740
Ransom Briggs Avatar asked Aug 10 '11 18:08

Ransom Briggs


2 Answers

Not quite what you want, but we set up our repositories so that developers get all dependencies from the local private repo, and that local private repo caches the maven central repo. This is faster, as dependencies are only pulled once from maven central by the first developer to access them, and also allows you to see what artifacts are being used in your company. Nexus and artifactory and I am sure all other repositories do as well.

like image 200
sbridges Avatar answered Sep 24 '22 01:09

sbridges


Looks like something similar was asked on the gradle mailing list and the best option currently available is indeed to turn to artifcatory and manage your own shared repository.

like image 45
Nicolas Modrzyk Avatar answered Sep 23 '22 01:09

Nicolas Modrzyk