import javax.security.auth.login.ConfigurationSpi;

plugins {
	id 'groovy'
	id 'eclipse'
	id 'java-gradle-plugin'
	id 'jacoco'
}

description = 'Bundlor Gradle Plugin'

eclipse {
	project {
		file.beforeMerged {
			project.natures.clear()
		}
		natures = [
			'org.eclipse.jdt.groovy.core.groovyNature',
			'org.eclipse.jdt.core.javanature'
		]
    }
}

jar {
	manifest.attributes('Implementation-Version': version)
	from "$rootDir/build-bundlor/resources/about"
}

task sourcesJar(type: Jar, dependsOn: classes) {
	description 'Assembles a jar archive containing the sources.'
	group = 'build'
    classifier = 'sources'
	from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    description 'Assembles a jar archive containing the javadocs.'
	group = 'build'
    classifier = 'javadoc'
    from javadoc.destinationDir
}

repositories {
	mavenCentral()
}

dependencies {
	compile localGroovy()
	compile project(':org.eclipse.virgo.bundlor')
    compile project(':org.eclipse.virgo.bundlor.blint')
	testCompile "junit:junit:${junitVersion}"
}

gradlePlugin {
	plugins {
		bundlor {
			group = 'org.eclipse.virgo.bundlor'
			id = 'org.eclipse.virgo.bundlor'
			implementationClass = 'org.eclipse.virgo.bundlor.gradle.BundlorGradlePlugin'
		}
	}
}

