Generate spring-oxm test classes and bindings
- Generate castor test classes with genCastor task - Generate xmlbeans test classes with genXmlbeans task - Generate JAXB2 test classes with genJaxb task - Generate JiBX bindings by extending existing compileTestJava task Test classes are written into their own dedicated output folders and tied into the spring-oxm classpath using the files(...).builtBy(...) directive. Incremental build works as expected across all of these customizations. `gradle eclipse` and `gradle idea` generate correct .project / .iml metadata respectively, i.e., these special cases do not cause a problem in the IDE (as they used to prior to the move to Gradle).
This commit is contained in:
@@ -227,6 +227,7 @@ project('spring-tx') {
|
||||
|
||||
project('spring-oxm') {
|
||||
description = 'Spring Object/XML Marshalling'
|
||||
apply from: 'oxm.gradle'
|
||||
dependencies {
|
||||
compile project(":spring-context")
|
||||
compile "commons-lang:commons-lang:2.5"
|
||||
@@ -238,10 +239,9 @@ project('spring-oxm') {
|
||||
testCompile "org.codehaus.jettison:jettison:1.0.1"
|
||||
testCompile "xmlunit:xmlunit:1.2"
|
||||
testCompile "xmlpull:xmlpull:1.1.3.4a"
|
||||
// this is a workaround until we have xjc/etc generation plugged in
|
||||
// in order for this to work, you must FIRST run `ant test` within the
|
||||
// .oxm module. that will create/populate the target/test-classes dir
|
||||
testCompile(files("target/test-classes"))
|
||||
testCompile(files(genCastor.classesDir).builtBy(genCastor))
|
||||
testCompile(files(genJaxb.classesDir).builtBy(genJaxb))
|
||||
testCompile(files(genXmlbeans.classesDir).builtBy(genXmlbeans))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="org.springframework.oxm" xmlns:ivy="antlib:org.apache.ivy.ant">
|
||||
<property file="${basedir}/../build.properties"/>
|
||||
<property file="${basedir}/../build.versions"/>
|
||||
<import file="${basedir}/../build-spring-framework/package-bundle.xml"/>
|
||||
<import file="${basedir}/../spring-build/standard/default.xml"/>
|
||||
|
||||
<property name="flightSchema" value="${basedir}/src/test/resources/org/springframework/oxm/flight.xsd"/>
|
||||
<property name="orderSchema" value="${basedir}/src/test/resources/org/springframework/oxm/order.xsd"/>
|
||||
<property name="castorBuilderProperties" value="${basedir}/src/test/castor/castorbuilder.properties"/>
|
||||
<property name="test.castor.dir" value="${target.dir}/castor/test"/>
|
||||
<property name="test.jaxb.dir" value="${target.dir}/jaxb/test"/>
|
||||
|
||||
<macrodef name="test-compile">
|
||||
<attribute name="classpath.id"/>
|
||||
<attribute name="input.dir"/>
|
||||
<attribute name="output.dir"/>
|
||||
<attribute name="resources.dir"/>
|
||||
<sequential>
|
||||
<delete quiet="true" dir="@{output.dir}"/>
|
||||
<mkdir dir="@{output.dir}"/>
|
||||
|
||||
<!-- Castor -->
|
||||
<ivy:cachepath resolveId="castor.classpath" pathid="castor.classpath" organisation="org.codehaus.castor"
|
||||
module="com.springsource.org.castor.anttask" revision="1.2.0" conf="runtime" type="jar"
|
||||
inline="true" log="download-only"/>
|
||||
<taskdef name="castor" classname="org.castor.anttask.CastorCodeGenTask" classpathref="castor.classpath"/>
|
||||
|
||||
<delete quiet="true" dir="${test.castor.dir}" />
|
||||
<mkdir dir="${test.castor.dir}" />
|
||||
|
||||
<castor types="j2" warnings="false" file="${flightSchema}" todir="${test.castor.dir}"
|
||||
package="org.springframework.oxm.castor" properties="${castorBuilderProperties}"/>
|
||||
<castor types="j2" warnings="false" file="${orderSchema}" todir="${test.castor.dir}"
|
||||
package="org.springframework.oxm.castor" properties="${castorBuilderProperties}"/>
|
||||
<do-compile classpath.id="@{classpath.id}" input.dir="${test.castor.dir}" output.dir="@{output.dir}"
|
||||
resources.dir="${test.castor.dir}"/>
|
||||
<copy todir="@{output.dir}">
|
||||
<fileset dir="${test.castor.dir}">
|
||||
<exclude name="**/*.java"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<!-- JAXB2 -->
|
||||
<ivy:cachepath resolveId="jaxb.classpath" pathid="jaxb.classpath" organisation="com.sun.xml"
|
||||
module="com.springsource.com.sun.tools.xjc" revision="2.1.7" conf="runtime" type="jar" inline="true"
|
||||
log="download-only"/>
|
||||
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="jaxb.classpath"/>
|
||||
|
||||
<delete quiet="true" dir="${test.jaxb.dir}" />
|
||||
<mkdir dir="${test.jaxb.dir}" />
|
||||
|
||||
<xjc destdir="${test.jaxb.dir}" package="org.springframework.oxm.jaxb.test" schema="${flightSchema}">
|
||||
<produces dir="${test.jaxb.dir}" includes="**/*.java"/>
|
||||
</xjc>
|
||||
<do-compile classpath.id="@{classpath.id}" input.dir="${test.jaxb.dir}" output.dir="@{output.dir}"
|
||||
resources.dir="${test.jaxb.dir}"/>
|
||||
|
||||
<!-- Standard Compile -->
|
||||
<test-pre-compile classpath.id="@{classpath.id}" input.dir="@{input.dir}" output.dir="@{output.dir}"
|
||||
resources.dir="@{resources.dir}"/>
|
||||
<do-compile classpath.id="@{classpath.id}" input.dir="@{input.dir}" output.dir="@{output.dir}"
|
||||
resources.dir="@{resources.dir}"/>
|
||||
<test-post-compile classpath.id="@{classpath.id}" input.dir="@{input.dir}" output.dir="@{output.dir}"
|
||||
resources.dir="@{resources.dir}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="test-pre-compile">
|
||||
<attribute name="classpath.id"/>
|
||||
<attribute name="input.dir"/>
|
||||
<attribute name="output.dir"/>
|
||||
<attribute name="resources.dir"/>
|
||||
<sequential>
|
||||
<!-- XMLBeans -->
|
||||
<ivy:cachepath resolveId="xmlbeans.classpath" pathid="xmlbeans.classpath" organisation="org.apache.xmlbeans"
|
||||
module="com.springsource.org.apache.xmlbeans" revision="2.4.0"
|
||||
conf="runtime" type="jar" inline="true" log="download-only"/>
|
||||
<taskdef name="xmlbeans" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpathref="xmlbeans.classpath"/>
|
||||
<xmlbeans schema="${flightSchema}" classgendir="@{output.dir}" classpathref="xmlbeans.classpath" compiler="modern"
|
||||
verbose="false"/>
|
||||
</sequential>
|
||||
|
||||
</macrodef>
|
||||
|
||||
<macrodef name="test-post-compile">
|
||||
<attribute name="classpath.id"/>
|
||||
<attribute name="input.dir"/>
|
||||
<attribute name="output.dir"/>
|
||||
<attribute name="resources.dir"/>
|
||||
<sequential>
|
||||
<!-- JiBX -->
|
||||
<ivy:cachepath resolveId="jibx.classpath" pathid="jibx.classpath" organisation="net.sourceforge.jibx"
|
||||
module="com.springsource.org.jibx.binding" revision="1.1.5"
|
||||
conf="runtime" type="jar" inline="true" log="download-only"/>
|
||||
<taskdef name="jibx-bind" classname="org.jibx.binding.ant.CompileTask" classpathref="jibx.classpath"/>
|
||||
<jibx-bind load="true" binding="${basedir}/src/test/resources/org/springframework/oxm/jibx/binding.xml">
|
||||
<classpathset dir="@{output.dir}">
|
||||
<include name="**/jibx/**/*"/>
|
||||
</classpathset>
|
||||
</jibx-bind>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
</project>
|
||||
130
org.springframework.oxm/oxm.gradle
Normal file
130
org.springframework.oxm/oxm.gradle
Normal file
@@ -0,0 +1,130 @@
|
||||
configurations {
|
||||
castor
|
||||
xjc
|
||||
xmlbeans
|
||||
jibx
|
||||
}
|
||||
dependencies {
|
||||
castor "org.codehaus.castor:castor-anttasks:1.2"
|
||||
castor "velocity:velocity:1.5"
|
||||
xjc "com.sun.xml:com.springsource.com.sun.tools.xjc:2.1.7"
|
||||
xmlbeans "org.apache.xmlbeans:com.springsource.org.apache.xmlbeans:2.4.0"
|
||||
jibx "org.jibx:jibx-bind:1.1.5"
|
||||
jibx "bcel:bcel:5.1"
|
||||
}
|
||||
|
||||
genSourcesDir = "${buildDir}/generated-sources"
|
||||
flightSchema = "${projectDir}/src/test/resources/org/springframework/oxm/flight.xsd"
|
||||
|
||||
task genCastor {
|
||||
orderSchema = "${projectDir}/src/test/resources/org/springframework/oxm/order.xsd"
|
||||
castorBuilderProperties = "${projectDir}/src/test/castor/castorbuilder.properties"
|
||||
|
||||
sourcesDir = "${genSourcesDir}/castor"
|
||||
classesDir = "${buildDir}/classes/castor"
|
||||
|
||||
inputs.files flightSchema, orderSchema, castorBuilderProperties
|
||||
outputs.dir classesDir
|
||||
|
||||
doLast() {
|
||||
project.ant {
|
||||
taskdef name: "castor", classname: "org.castor.anttask.CastorCodeGenTask",
|
||||
classpath: configurations.castor.asPath
|
||||
mkdir(dir: sourcesDir)
|
||||
mkdir(dir: classesDir)
|
||||
|
||||
castor(types: "j2", warnings: false, file: flightSchema, todir: sourcesDir,
|
||||
package: "org.springframework.oxm.castor", properties: castorBuilderProperties)
|
||||
|
||||
castor(types: "j2", warnings: false, file: orderSchema, todir: sourcesDir,
|
||||
package: "org.springframework.oxm.castor", properties: castorBuilderProperties)
|
||||
|
||||
javac(destdir: classesDir, source: 1.5, target: 1.5, debug: true,
|
||||
debugLevel: "lines,vars,source", classpath: configurations.castor.asPath) {
|
||||
src(path: sourcesDir)
|
||||
include(name: "**/*.java")
|
||||
include(name: "*.java")
|
||||
}
|
||||
|
||||
copy(todir: classesDir) {
|
||||
fileset(dir: sourcesDir, erroronmissingdir: false) {
|
||||
exclude(name: "**/*.java")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task genJaxb {
|
||||
sourcesDir = "${genSourcesDir}/jaxb"
|
||||
classesDir = "${buildDir}/classes/jaxb"
|
||||
|
||||
inputs.files flightSchema
|
||||
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.5, target: 1.5, debug: true,
|
||||
debugLevel: "lines,vars,source",
|
||||
classpath: configurations.castor.asPath) {
|
||||
src(path: sourcesDir)
|
||||
include(name: "**/*.java")
|
||||
include(name: "*.java")
|
||||
}
|
||||
|
||||
copy(todir: classesDir) {
|
||||
fileset(dir: sourcesDir, erroronmissingdir: false) {
|
||||
exclude(name: "**/*.java")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task genXmlbeans {
|
||||
classesDir = "${buildDir}/classes/xmlbeans"
|
||||
|
||||
inputs.files flightSchema
|
||||
outputs.dir classesDir
|
||||
|
||||
doLast() {
|
||||
project.ant {
|
||||
taskdef name: "xmlbeans",
|
||||
classname: "org.apache.xmlbeans.impl.tool.XMLBean",
|
||||
classpath: configurations.xmlbeans.asPath
|
||||
|
||||
xmlbeans(classgendir: classesDir, schema: flightSchema,
|
||||
compiler: "modern", verbose: "false",
|
||||
classpath: configurations.xmlbeans.asPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add jibx binding to the normal test compilation process
|
||||
compileTestJava {
|
||||
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: true, load: true, binding: bindingXml) {
|
||||
classpathset(dir: sourceSets.test.output.classesDir) {
|
||||
include(name: "**/jibx/**/*")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,12 @@ import static org.custommonkey.xmlunit.XMLAssert.*;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
@org.junit.Ignore // TODO fix this issue https://gist.github.com/1174579
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*
|
||||
* NOTE: These tests fail under Eclipse/IDEA because JiBX binding does
|
||||
* not occur by default. The Gradle build should succeed, however.
|
||||
*/
|
||||
public class JibxMarshallerTests extends AbstractMarshallerTests {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,8 +25,10 @@ import org.springframework.oxm.Unmarshaller;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*
|
||||
* NOTE: These tests fail under Eclipse/IDEA because JiBX binding does
|
||||
* not occur by default. The Gradle build should succeed, however.
|
||||
*/
|
||||
@org.junit.Ignore // TODO fix this issue https://gist.github.com/1174575
|
||||
public class JibxUnmarshallerTests extends AbstractUnmarshallerTests {
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user