/ spring-oxm / spring-oxm.gradle
description = "Spring Object/XML Marshalling"

configurations {
	jibx
	xjc
}

dependencies {
	jibx "org.jibx:jibx-bind:1.3.1"
	jibx "org.apache.bcel:bcel:6.0"
	xjc "javax.xml.bind:jaxb-api:2.3.1"
	xjc "com.sun.xml.bind:jaxb-core:2.3.0.1"
	xjc "com.sun.xml.bind:jaxb-impl:2.3.0.1"
	xjc "com.sun.xml.bind:jaxb-xjc:2.3.1"
	xjc "com.sun.activation:javax.activation:1.2.0"
}

ext.genSourcesDir = "${buildDir}/generated-sources"
ext.flightSchema = "${projectDir}/src/test/resources/org/springframework/oxm/flight.xsd"

task genJaxb {
	ext.sourcesDir = "${genSourcesDir}/jaxb"
	ext.classesDir = "${buildDir}/classes/jaxb"

	inputs.files(flightSchema).withPathSensitivity(PathSensitivity.RELATIVE)
	outputs.dir classesDir

	doLast() {
		project.ant {
			taskdef name: "xjc", classname: "com.sun.tools.xjc.XJCTask",
					classpath: configurations.xjc.asPath
			mkdir(dir: sourcesDir)
			mkdir(dir: classesDir)

			xjc(destdir: sourcesDir, schema: flightSchema,
					package: "org.springframework.oxm.jaxb.test") {
				produces(dir: sourcesDir, includes: "**/*.java")
			}

			javac(destdir: classesDir, source: 1.8, target: 1.8, debug: true,
					debugLevel: "lines,vars,source",
					classpath: configurations.xjc.asPath) {
				src(path: sourcesDir)
				include(name: "**/*.java")
				include(name: "*.java")
			}

			copy(todir: classesDir) {
				fileset(dir: sourcesDir, erroronmissingdir: false) {
					exclude(name: "**/*.java")
				}
			}
		}
	}
}

dependencies {
	compile(project(":spring-beans"))
	compile(project(":spring-core"))
	optional("javax.xml.bind:jaxb-api")
	optional("javax.activation:javax.activation-api")
	optional("com.thoughtworks.xstream:xstream")
	optional("org.jibx:jibx-run")
	testCompile(project(":spring-context"))
	testCompile("org.ogce:xpp3")
	testCompile("org.codehaus.jettison:jettison") {
		exclude group: "stax", module: "stax-api"
	}
	testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
	testCompile("org.xmlunit:xmlunit-assertj")
	testCompile("org.xmlunit:xmlunit-matchers")
	testRuntime("com.sun.xml.bind:jaxb-core")
	testRuntime("com.sun.xml.bind:jaxb-impl")
}

// JiBX compiler is currently not compatible with JDK 9
if (JavaVersion.current() == JavaVersion.VERSION_1_8) {
	compileTestJava {
		def bindingXml = "${projectDir}/src/test/resources/org/springframework/oxm/jibx/binding.xml"

		doLast() {
			project.ant {
				taskdef(name: "jibx",
						classname: "org.jibx.binding.ant.CompileTask",
						classpath: configurations.jibx.asPath)

				jibx(verbose: false, load: true, binding: bindingXml) {
					classpathset(dir: sourceSets.test.java.outputDir) {
						include(name: "**/jibx/**/*")
					}
				}
			}
		}
	}
}

Top