import javax.security.auth.login.ConfigurationSpi;

plugins {
	id 'groovy'
	id 'eclipse'
	id 'java-gradle-plugin'
	id 'maven-publish'
	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"
}

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'
		}
	}
}

publishing {
	repositories {
		mavenLocal()
	}
	publications {
		maven(MavenPublication) {
			from components.java
			groupId 'org.eclipse.virgo.bundlor'
		}
	}
}
