buildscript {
	if ("local".equals(mavenRepo)) {
		repositories {
			maven {
				url localPluginRepoUrl
			}
		}
		dependencies {
			classpath "com.beecode:mk-gradle-plugin:1.1.0"
		}
	}
}

apply plugin: "eclipse"

configure(subprojects) { project ->
	apply from: "../common.gradle"

	repositories {
		maven {
			url mavenRepoUrl
		}
	}
	
	task sourcesJar(type: Jar, dependsOn: classes) {
		classifier = 'sources'
		from sourceSets.main.allSource
	}

	publishing {
		publications {
			mavenJava(MavenPublication) {
				from components.java
				artifact sourcesJar
			}
		}
		repositories {
			maven {
				credentials {
					username publishUsername
					password publishPassword
				}
				if (version.endsWith('-SNAPSHOT')) {
					url publishSnapshotRepo
				} else {
					url publishReleaseRepo
				}
			}
		}
	}
	
	task buildJma(type: Zip, dependsOn: [generateJma, processResources]) {
		extension = "jma"
		destinationDir = new File(buildDir, "jma")
		from "${projectDir}/bin"
		from "${buildDir}/resources/main"
	}

}

task buildJma() {
	subprojects.forEach {
		dependsOn it.getTasksByName("buildJma", false)
	}
}

task clean(type: Delete) {
	subprojects.forEach {
		dependsOn it.getTasksByName("clean", false)
	}
	delete buildDir
}

task build(type: Zip) {
	subprojects.forEach {
		dependsOn it.getTasksByName("build", false)
		from it.tasks.jar.archivePath
	}
	destinationDir = new File(buildDir, "archive")
}

task buildCopy(type: Copy) {
	subprojects.forEach {
		dependsOn it.getTasksByName("build", false)
		from it.tasks.jar.archivePath
	}
	destinationDir = new File(buildDir, "metadata")
}
build.baseName = "${name}"


def projName = name
def projVersion = version
def warPath = build.archivePath.absolutePath
task generateResultInfo() {
	if (outFile != null && !outFile.isEmpty()) {
		doLast {
			def builder = new groovy.xml.StreamingMarkupBuilder()
			builder.encoding = 'UTF-8'
			def resultInfo = {
				mkp.xmlDeclaration()
				it.build {
					it.project(name: projName, version: projVersion) {
						it.artifact(path: warPath)
					}
				}
			}
			def writer = new FileWriter(outFile)
			try {
				writer << builder.bind(resultInfo)
			} finally {
				writer.close()
			}
		}
	}
}
build.dependsOn 'generateResultInfo'