view init.gradle @ 81:36b2fd9e3861

fix handling of multi-project artifacts and local repos
author smith@nwoca.org
date Thu, 09 Feb 2012 15:07:00 -0500
parents 647840c0753d
children c7cbf5e9db74
line wrap: on
line source

gradle.addListener(new ArtifactoryGradleSettings())

gradle.bambooBuild = System.getenv().any { it.key.startsWith('BAMBOO')}
logger.info "applying SSDT artifactory Gradle Settings (bamboo: $gradle.bambooBuild)"

if (gradle.bambooBuild) {
   apply from: "${gradle.hasProperty('ssdtGradlekitLocation') ? gradle.ssdtGradlekitLocation :'http://hg.ssdt-ohio.org/ssdt/gradlekit/raw-file/tip'}/artifactory.gradle"
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.0-milestone-7'
}

wrapper << {
    // patch wrapper path for 1.0-milestone-7 bug (http://issues.gradle.org/browse/GRADLE-1823)
    ant.replace(file: 'gradlew', token: '\\wrapper\\gradle-wrapper.jar',value:'/wrapper/gradle-wrapper.jar')
}


allprojects {
    task cleanLocal << {
        def local = project.repositories.find { it.name == 'local' } 
        if ( local ) {                  
            logger.info "removing local repo: $it"
            new File(System.properties['user.home'] + "/.ssdt/local-repo").deleteDir() 
        }
    }    
    cleanLocal.onlyIf { 
        project.repositories.any { it.name == 'local' }
    }    
    task publishLocal(dependsOn: 'uploadArchives')  << { println "published to local repository" }
    
    task repositories << {
        repositories.each {
            println "      $it.name"
        }
    }
}

class ArtifactoryGradleSettings extends BuildAdapter implements BuildListener {
    
    def void projectsEvaluated(Gradle gradle) {
        Project root = gradle.getRootProject()       
        root.allprojects {
            def thisProject = delegate
        
            configurations.all {
                resolutionStrategy.cacheChangingModulesFor 120, 'minutes'
                resolutionStrategy.cacheDynamicVersionsFor 120, 'minutes'
            }        
            repositories {
                if (!gradle.bambooBuild) {                         
                    add(new org.apache.ivy.plugins.resolver.FileSystemResolver()) {
                        name = 'local'
                        addIvyPattern System.properties['user.home'] + "/.ssdt/local-repo/[module]-ivy-[revision].xml"
                        addArtifactPattern System.properties['user.home'] + "/.ssdt/local-repo/[module]-[revision](-[classifier]).[ext]"
                        descriptor = 'optional'
                        checkmodified = true
                    }                       
                }                
                add(new org.apache.ivy.plugins.resolver.URLResolver()) {
                  name = 'ssdt-snapshots'
                  m2compatible =  true
                  url = 'http://repos.ssdt.nwoca.org/artifactory/ssdt-snapshots'
                  addArtifactPattern('http://repos.ssdt.nwoca.org/artifactory/ssdt-snapshots/[organization]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]')
                  addIvyPattern('http://repos.ssdt.nwoca.org/artifactory/ssdt-snapshots/[organization]/[module]/ivy-[revision].xml')
                  checkmodified = true
                  changingMatcher = 'regexp'
                  changingPattern = '.*SNAPSHOT'                  
                }
                add(new org.apache.ivy.plugins.resolver.URLResolver()) {
                  name = 'ssdt-releases'
                  m2compatible = false
                  url = 'http://repos.ssdt.nwoca.org/artifactory/ssdt-releases'
                  addArtifactPattern('http://repos.ssdt.nwoca.org/artifactory/ssdt-releases/[organization]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]')
                  addIvyPattern('http://repos.ssdt.nwoca.org/artifactory/ssdt-releases/[organization]/[module]/ivy-[revision].xml')
                }
                mavenRepo name: 'ssdt-repo', url: 'http://repos.ssdt.nwoca.org/artifactory/ssdt-repo'
                 
            }           
            
            if ( thisProject.repositories.find { it.name == 'local' } ) {
                uploadArchives {
                    repositories {                     
                         add thisProject.repositories.local
                    }
                }
            }          
        }
    }
}