Skip to content

Commit f45d16d

Browse files
authored
pull request: compile with java 11 (#255)
* towards using modern saxon * building modbuild.xml * more xslt classpath fixes * finally fixed xslt * compile for java8 * don't commit idea stuff * gradle ant import * build all-in-one jing-trang.jar * fixes * fixes * fixes * improved gradle wrapped merge jar build * better gradle incremental build * fixed project name * updates * fix for gradle >=7.0
1 parent a78a75f commit f45d16d

13 files changed

Lines changed: 174 additions & 41 deletions

File tree

.classpath

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<classpathentry kind="lib" path="lib/isorelax.jar"/>
1010
<classpathentry kind="lib" path="lib/javacc.jar"/>
1111
<classpathentry kind="lib" path="lib/resolver.jar"/>
12-
<classpathentry kind="lib" path="lib/saxon.jar"/>
1312
<classpathentry kind="lib" path="lib/saxon9.jar"/>
1413
<classpathentry kind="lib" path="lib/serializer.jar"/>
1514
<classpathentry kind="lib" path="lib/testng.jar"/>

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ build/
44
doc/
55
modbuild.xml
66
modules.xml
7+
*.iml
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
eclipse.preferences.version=1
22
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3-
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
4-
org.eclipse.jdt.core.compiler.compliance=1.5
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4+
org.eclipse.jdt.core.compiler.compliance=1.8
55
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
66
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7-
org.eclipse.jdt.core.compiler.source=1.5
7+
org.eclipse.jdt.core.compiler.source=1.8

build.gradle.kts

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import org.gradle.api.execution.TaskExecutionGraph
2+
3+
/*
4+
* This file was generated by the Gradle 'init' task.
5+
*
6+
* This generated file contains a sample Java project to get you started.
7+
* For more details take a look at the Java Quickstart chapter in the Gradle
8+
* user guide available at https://docs.gradle.org/5.0/userguide/tutorial_java_projects.html
9+
*/
10+
11+
plugins {
12+
// Apply the java plugin to add support for Java
13+
// java
14+
`java-library`
15+
16+
// Apply the application plugin to add support for building an application
17+
// application
18+
}
19+
20+
repositories {
21+
mavenLocal()
22+
mavenCentral()
23+
24+
// Use jcenter for resolving your dependenes.
25+
// You can declare any Maven/Ivy/file repository here.
26+
jcenter()
27+
}
28+
29+
dependencies {
30+
// TODO
31+
32+
api("org.xmlresolver", "xmlresolver", "1.1.0")
33+
api("net.sf.saxon", "Saxon-HE", "10.3")
34+
35+
// Use TestNG framework, also requires calling test.useTestNG() below
36+
testImplementation("org.testng:testng:7.3.0")
37+
}
38+
39+
ant.importBuild("build.xml")
40+
41+
val jars = task("jars") {
42+
inputs.files(fileTree("**/*.java"))
43+
outputs.files("build/jing.jar", "build/trang.jar", "build/dtdinst.jar")
44+
45+
// val antJar = tasks.named("ant-jar").outputs.upToDateWhen(outputs.upToDate)
46+
47+
finalizedBy(":ant-jar")
48+
}
49+
50+
// https://stackoverflow.com/questions/41794914/how-to-create-the-fat-jar-with-gradle-kotlin-script
51+
val jingTrang = task("jingtrang", Jar::class) {
52+
from(listOf("build/jing.jar", "build/trang.jar").map { it -> zipTree(it) })
53+
with(tasks.jar.get() as CopySpec)
54+
dependsOn(":ant-jar")
55+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE;
56+
}
57+
58+
// if jing-trang is a composite, merged jar resolution
59+
// does not work, even if the artifact is declared like below
60+
artifacts {
61+
add("archives", jingTrang)
62+
add("default", jingTrang)
63+
}
64+
65+
// https://docs.gradle.org/current/userguide/kotlin_dsl.html#using_the_container_api
66+
tasks.named("clean") {
67+
dependsOn(":ant-clean")
68+
}
69+
70+
tasks.named("jingtrang") {
71+
dependsOn(":jars")
72+
}
73+
74+
tasks.named("build") {
75+
dependsOn(jingTrang)
76+
}
77+
78+
val antJar: TaskProvider<Task> = tasks.named("ant-jar")
79+
80+
// https://stackoverflow.com/questions/27993814/only-run-task-if-another-isnt-up-to-date-in-gradle
81+
project.gradle.taskGraph.whenReady {
82+
// make the antJar task have the same inputs/outputs
83+
antJar.get().inputs.files(jars.inputs.files)
84+
antJar.get().outputs.files(jars.outputs.files)
85+
}
86+
87+
defaultTasks(":build")

build.xml

Lines changed: 48 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<project name="jing-trang" default="jar">
1+
<project name="jing-trang" default="ant-jar">
22

33
<property name="lib.dir" value="lib"/>
44
<property name="build.dir" value="${basedir}/build"/>
@@ -41,20 +41,25 @@
4141

4242
<target name="modbuild" depends="modules,check-modbuild" unless="modbuild-ok">
4343
<xslt style="build.xsl" in="modules.xml" out="modbuild.xml" force="true">
44-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
44+
<classpath>
45+
<fileset dir="lib">
46+
<filename name="saxon9.jar"/>
47+
</fileset>
48+
</classpath>
49+
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
4550
</xslt>
4651
</target>
4752

48-
<target name="test" depends="modbuild">
49-
<ant antfile="modbuild.xml" target="test"/>
53+
<target name="ant-test" depends="modbuild">
54+
<ant antfile="modbuild.xml" target="ant-test"/>
5055
</target>
5156

5257
<target name="srczip" depends="modbuild">
5358
<ant antfile="modbuild.xml" target="srczip"/>
5459
</target>
5560

56-
<target name="jar" depends="modbuild">
57-
<ant antfile="modbuild.xml" target="jar"/>
61+
<target name="ant-jar" depends="modbuild">
62+
<ant antfile="modbuild.xml" target="ant-jar"/>
5863
<taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask">
5964
<classpath>
6065
<pathelement location="${build.dir}/jing.jar"/>
@@ -75,14 +80,19 @@
7580
includes="${moddir}/*/${modfile}"
7681
filedirparameter="name"
7782
destdir=".">
78-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
83+
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
84+
<classpath>
85+
<fileset dir="lib">
86+
<filename name="saxon9.jar"/>
87+
</fileset>
88+
</classpath>
7989
<regexpmapper from="mod/([-a-zA-Z0-9_]*)/mod.xml"
8090
to="mod/\1/\1.iml"
8191
handledirsep="true"/>
8292
</xslt>
8393
</target>
8494

85-
<target name="init">
95+
<target name="ant-init">
8696
<mkdir dir="${build.dir}"/>
8797
<mkdir dir="${build.dir}/dist"/>
8898
</target>
@@ -91,7 +101,7 @@
91101
<xmlproperty file="version.xml"/>
92102
</target>
93103

94-
<target name="validate" depends="jar" description="Validate all XML files" >
104+
<target name="validate" depends="ant-jar" description="Validate all XML files" >
95105
<jing rngfile="test/regextest.rnc" compactsyntax="true">
96106
<fileset dir="test" includes="regextest.xml"/>
97107
</jing>
@@ -144,7 +154,7 @@
144154
com.thaiopensource.xml.sax,
145155
com.thaiopensource.util"/>
146156

147-
<target name="javadoc" depends="init">
157+
<target name="ant-javadoc" depends="ant-init">
148158
<mkdir dir="${build.dir}/api"/>
149159
<mkdir dir="${build.dir}/api/datatype"/>
150160
<mkdir dir="${build.dir}/api/jing"/>
@@ -198,7 +208,7 @@
198208
</javadoc>
199209
</target>
200210

201-
<target name="doccheck" depends="init">
211+
<target name="doccheck" depends="ant-init">
202212
<mkdir dir="${build.dir}/doccheck"/>
203213
<javadoc sourcepathref="javadoc.sourcepath"
204214
additionalparam="-html5 -Xdoclint:none"
@@ -217,7 +227,7 @@
217227
</javadoc>
218228
</target>
219229

220-
<target name="datatype-sample" depends="jar">
230+
<target name="datatype-sample" depends="ant-jar">
221231
<ant dir="datatype-sample">
222232
<property name="build.dir" value="${build.dir}/datatype-sample"/>
223233
<property name="jing.jar" value="${build.dir}/jing.jar"/>
@@ -227,31 +237,46 @@
227237
<target name="jing-doc" depends="version">
228238
<xslt basedir="doc" destdir="${build.dir}" includes="derivative.xml"
229239
style="doc/derivative.xsl">
230-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
240+
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
241+
<classpath>
242+
<fileset dir="lib">
243+
<filename name="saxon9.jar"/>
244+
</fileset>
245+
</classpath>
231246
</xslt>
232247
<xslt basedir="doc" destdir="${build.dir}" includes="design.xml"
233248
style="doc/design.xsl">
234-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
249+
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
250+
<classpath>
251+
<fileset dir="lib">
252+
<filename name="saxon9.jar"/>
253+
</fileset>
254+
</classpath>
235255
</xslt>
236256
<xslt basedir="doc" destdir="${build.dir}" includes="nrl.xml"
237257
style="doc/nrl.xsl">
238-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
258+
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
259+
<classpath>
260+
<fileset dir="lib">
261+
<filename name="saxon9.jar"/>
262+
</fileset>
263+
</classpath>
239264
</xslt>
240265
<copy todir="${build.dir}">
241266
<fileset dir="doc" includes="*.html"/>
242267
</copy>
243268
<replace file="${build.dir}/jing.html" token="@VERSION@" value="${version}"/>
244269
</target>
245270

246-
<target name="jing-dist" depends="init,jar,javadoc,jing-doc,datatype-sample,srczip,version">
271+
<target name="jing-dist" depends="ant-init,ant-jar,ant-javadoc,jing-doc,datatype-sample,srczip,version">
247272
<mkdir dir="${build.dir}/jing-bin"/>
248273
<copy todir="${build.dir}/jing-bin">
249274
<fileset dir="doc/jing-bin" includes="readme.html"/>
250275
</copy>
251276
<replace file="${build.dir}/jing-bin/readme.html" token="@VERSION@" value="${version}"/>
252277
<zip zipfile="${build.dir}/dist/jing-${version}.zip">
253278
<zipfileset dir="${build.dir}" includes="jing.jar" prefix="jing-${version}/bin"/>
254-
<zipfileset dir="lib" includes="saxon.jar,isorelax.jar,xercesImpl.jar,xml-apis.jar"
279+
<zipfileset dir="lib" includes="saxon9.jar,isorelax.jar,xercesImpl.jar,xml-apis.jar"
255280
prefix="jing-${version}/bin"/>
256281
<zipfileset dir="${build.dir}/mod/jing"
257282
includes="src.zip"
@@ -302,7 +327,7 @@
302327
includes="trang.html,trang-manual.html" token="@VERSION@" value="${version}"/>
303328
</target>
304329

305-
<target name="trang-dist" depends="init,jar,trang-doc,srczip,version">
330+
<target name="trang-dist" depends="ant-init,ant-jar,trang-doc,srczip,version">
306331
<zip zipfile="${build.dir}/dist/trang-${version}.zip">
307332
<zipfileset dir="trang" includes="copying.txt" prefix="trang-${version}"/>
308333
<zipfileset dir="${build.dir}"
@@ -348,7 +373,7 @@
348373
value="${version}"/>
349374
</target>
350375

351-
<target name="dtdinst-dist" depends="init,jar,dtdinst-doc,srczip,version">
376+
<target name="dtdinst-dist" depends="ant-init,ant-jar,dtdinst-doc,srczip,version">
352377
<zip zipfile="${build.dir}/dist/dtdinst-${version}.zip">
353378
<zipfileset dir="${build.dir}/dtdinst" prefix="dtdinst-${version}"/>
354379
<zipfileset dir="${build.dir}"
@@ -361,7 +386,7 @@
361386
<checksum file="${build.dir}/dist/dtdinst-${version}.zip" algorithm="sha1"/>
362387
</target>
363388

364-
<target name="website" depends="validate,javadoc,datatype-sample,jing-doc,trang-doc,dtdinst-doc"
389+
<target name="website" depends="validate,ant-javadoc,datatype-sample,jing-doc,trang-doc,dtdinst-doc"
365390
description="Build a .tar.gz containing the complete relaxng website" >
366391
<copy todir="${build.dir}">
367392
<fileset dir="." includes="xhtml/**/*.rng,xhtml/index.html"/>
@@ -385,7 +410,7 @@
385410
<gzip zipfile="${build.dir}/dist/relaxng.tar.gz" src="${build.dir}/relaxng.tar"/>
386411
</target>
387412

388-
<target name="dist" depends="test,validate,jing-dist,trang-dist,dtdinst-dist,website"
413+
<target name="dist" depends="ant-test,validate,jing-dist,trang-dist,dtdinst-dist,website"
389414
description="Make a distribution, leaving artifacts in ${build.dir}/dist"/>
390415

391416
<target name="googlecode.properties.available">
@@ -428,7 +453,7 @@
428453
labels="Type-Archive, OpSys-All, Version-${version}"/>
429454
</target>
430455

431-
<target name="clean"
456+
<target name="ant-clean"
432457
description="Remove almost all files created during the build process">
433458
<delete dir="${build.dir}"/>
434459
<exec executable="git">
@@ -439,7 +464,7 @@
439464
</exec>
440465
</target>
441466

442-
<target name="realclean" depends="clean"
467+
<target name="realclean" depends="ant-clean"
443468
description="Remove all files created during the build process">
444469
<delete>
445470
<fileset dir="mod" includes="*/*.iml"/>

build.xsl

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<property name="build.dir" value="${{basedir}}/build"/>
1414
<property name="doc.dir" value="${{basedir}}/doc"/>
1515
<property name="javacc.dir" value="${{lib.dir}}"/>
16-
<property name="ant.build.javac.source" value="7"/>
17-
<property name="ant.build.javac.target" value="1.7"/>
16+
<property name="ant.build.javac.source" value="8"/>
17+
<property name="ant.build.javac.target" value="1.8"/>
1818
<taskdef name="testng" classname="org.testng.TestNGAntTask">
1919
<classpath>
2020
<pathelement location="${{lib.dir}}/testng.jar"/>
@@ -51,7 +51,7 @@
5151
</xsl:attribute>
5252
</target>
5353
<target name="compile" depends="mod.jing.compile-main,mod.trang.compile-main"/>
54-
<target name="jar" depends="mod.dtdinst.jar,mod.jing.jar,mod.trang.jar"/>
54+
<target name="ant-jar" depends="mod.dtdinst.jar,mod.jing.jar,mod.trang.jar"/>
5555
<target name="srczip" depends="mod.dtdinst.srczip,mod.jing.srczip,mod.trang.srczip"/>
5656
<target name="jing-jar" depends="mod.jing.jar">
5757
<taskdef name="jing" classname="com.thaiopensource.relaxng.util.JingTask">
@@ -336,7 +336,13 @@
336336
<xslt style="{$srctestdir}/{@transform}"
337337
in="{$srctest}"
338338
out="{$runtestdir}/{@name}test.xml">
339-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
339+
<factory name="net.sf.saxon.TransformerFactoryImpl">
340+
<classpath>
341+
<fileset dir="lib">
342+
<filename name="saxon9.jar"/>
343+
</fileset>
344+
</classpath>
345+
</factory>
340346
</xslt>
341347
<!-- XXX Could validate intermediate result against a schema -->
342348
</xsl:if>
@@ -352,7 +358,12 @@
352358
</xsl:otherwise>
353359
</xsl:choose>
354360
</xsl:attribute>
355-
<factory name="com.icl.saxon.TransformerFactoryImpl"/>
361+
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
362+
<classpath>
363+
<fileset dir="lib">
364+
<filename name="saxon9.jar"/>
365+
</fileset>
366+
</classpath>
356367
<param name="dir" expression="{$runtestdir}"/>
357368
</xslt>
358369
</target>

datatype-sample/build.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<project name="RELAX NG Datatype Sample" default="jar" basedir=".">
1+
<project name="RELAX NG Datatype Sample" default="ant-jar" basedir=".">
22

33
<property name="build.dir" value="build"/>
44
<property name="jing.jar" value="jing.jar"/>
@@ -12,7 +12,7 @@
1212
<javac srcdir="src" destdir="${build.dir}/classes" classpath="${jing.jar}"/>
1313
</target>
1414

15-
<target name="jar" depends="compile">
15+
<target name="ant-jar" depends="compile">
1616
<jar jarfile="${build.dir}/datatype-sample.jar">
1717
<fileset dir="${build.dir}/classes"/>
1818
<fileset dir="src" includes="META-INF/services/*"/>

lib/saxon.jar

-559 KB
Binary file not shown.

mod/jing/mod.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<manifest>
2323
<attribute name="Main-Class" value="com/thaiopensource/relaxng/util/Driver"/>
2424
<attribute name="Class-Path"
25-
value="xercesImpl.jar xml-apis.jar saxon.jar saxon9.jar xalan.jar isorelax.jar resolver.jar"/>
25+
value="xercesImpl.jar xml-apis.jar saxon9.jar xalan.jar isorelax.jar resolver.jar"/>
2626
</manifest>
2727
<service type="com.thaiopensource.datatype.xsd.regex.RegexEngine"/>
2828
<service type="org.relaxng.datatype.DatatypeLibraryFactory"/>

0 commit comments

Comments
 (0)