This is an automated email from the ASF dual-hosted git repository.
vlamp pushed a commit to branch TAP5-2741
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
The following commit(s) were added to refs/heads/TAP5-2741 by this push:
new c5998ab41 TAP5-2741: First progress towards a more flexible build
setup.
c5998ab41 is described below
commit c5998ab411647cc6a60205c66fcf165cde2074dd
Author: Volker Lamp <[email protected]>
AuthorDate: Wed Apr 26 18:02:12 2023 +0200
TAP5-2741: First progress towards a more flexible build setup.
---
beanmodel/build.gradle | 8 +-
build.gradle | 248 ++++++++-------------
buildSrc/build.gradle | 8 +-
buildSrc/src/main/groovy/tapestry.base.gradle | 19 ++
buildSrc/src/main/groovy/tapestry.java.gradle | 105 +++++++++
commons/build.gradle | 4 +
.../internal/AbstractBeanModelSourceImplTest.java | 2 +-
plastic/build.gradle | 4 +
platform/build.gradle | 35 +++
settings.gradle | 24 ++
tapestry-beanvalidator/build.gradle | 4 +
.../TapestryBeanValidationIntegrationTests.java | 2 +-
tapestry-clojure/build.gradle | 4 +
tapestry-core/build.gradle | 6 +-
tapestry-func/build.gradle | 4 +
tapestry-hibernate-core/build.gradle | 4 +
tapestry-hibernate/build.gradle | 4 +
.../TapestryHibernateIntegrationTests.java | 2 +-
tapestry-http/build.gradle | 4 +
tapestry-internal-test/build.gradle | 4 +
tapestry-ioc-jcache/build.gradle | 4 +
tapestry-ioc-junit/build.gradle | 4 +
tapestry-ioc/build.gradle | 4 +
tapestry-javadoc/build.gradle | 11 +
tapestry-javadoc/src/module-info.java | 3 +
tapestry-jmx/build.gradle | 4 +
.../integration/TapestryJmxIntegrationTests.java | 2 +-
tapestry-jpa/build.gradle | 4 +
tapestry-json/build.gradle | 4 +
tapestry-kaptcha/build.gradle | 4 +
tapestry-latest-java-tests/build.gradle | 14 +-
tapestry-mongodb/build.gradle | 4 +
tapestry-openapi-viewer/build.gradle | 4 +
tapestry-rest-jackson/build.gradle | 4 +
tapestry-runner/build.gradle | 4 +
tapestry-spock/build.gradle | 14 +-
tapestry-spring/build.gradle | 4 +
tapestry-test-constants/build.gradle | 3 +
tapestry-test-data/build.gradle | 4 +
tapestry-test/build.gradle | 4 +
tapestry-upload/build.gradle | 4 +
tapestry-version-migrator/build.gradle | 4 +
tapestry-webresources/build.gradle | 4 +
tapestry5-annotations/build.gradle | 4 +
44 files changed, 442 insertions(+), 172 deletions(-)
diff --git a/beanmodel/build.gradle b/beanmodel/build.gradle
index f6f679012..ecec1a28a 100644
--- a/beanmodel/build.gradle
+++ b/beanmodel/build.gradle
@@ -1,11 +1,13 @@
+plugins {
+ id 'tapestry.java'
+ id 'antlr'
+}
+
import org.gradle.plugins.ide.idea.model.*
import t5build.*
description = "Fast class property discovery, reading and writing library
based on bytecode generation. Extracted from Apache Tapestry, but not dependent
on the Web framework (tapestry-core) nor the IoC one (tapestry-ioc)."
-//apply plugin: JavaPlugin
-apply plugin: 'antlr'
-
buildDir = 'target/gradle-build'
dependencies {
diff --git a/build.gradle b/build.gradle
index 8263e12c1..a0b840095 100755
--- a/build.gradle
+++ b/build.gradle
@@ -86,17 +86,6 @@ allprojects {
apply plugin: "eclipse"
apply plugin: "idea"
- repositories {
- mavenLocal()
- mavenCentral()
-
- // All things JBoss/Hibernate
- maven {
- name "JBoss"
- url
"https://repository.jboss.org/nexus/content/repositories/releases/"
- }
- }
-
configurations {
// Non-code artifacts, such as sources JARs and zipped JavaDocs
meta
@@ -137,6 +126,8 @@ String jdkVersion = System.properties['java.version']
def jdkMajorVersion = jdkVersion.substring(0, jdkVersion.indexOf(".")) // 1,
9, 10...
subprojects {
+
+ if (!project.name.equals('platform')) {
def specifyMaxPermSize = jdkVersion ==~ /1\.[67].+/
@@ -146,83 +137,24 @@ subprojects {
provided
}
- apply plugin: "java"
- apply plugin: "java-library"
+// apply plugin: "java"
+// apply plugin: "java-library"
apply plugin: "groovy" // mostly for testing
-
- apply plugin: "project-report"
- apply plugin: "jacoco"
+// apply plugin: "project-report"
apply plugin: "base"
- jacoco {
- toolVersion = "0.8.7"
- }
-
- sourceCompatibility = "1.8"
- targetCompatibility = "1.8"
-
- // See http://jira.codehaus.org/browse/GRADLE-784
-
- sourceSets {
- main {
- compileClasspath += configurations.provided
- }
- test {
- compileClasspath += configurations.provided
- runtimeClasspath += configurations.provided
- }
- }
-
- idea.module {
- scopes.PROVIDED.plus += [configurations.provided]
- }
-
- eclipse.classpath.plusConfigurations += [configurations.provided]
-
- dependencies {
-
- //
https://docs.gradle.org/7.3.3/userguide/upgrading_version_6.html#potential_breaking_changes,
- // Table 1. Common configuration upgrades
- testImplementation "org.spockframework:spock-core:${versions.spock}"
-
- testRuntimeOnly "org.slf4j:slf4j-log4j12:${versions.slf4j}"
- }
-
- compileTestGroovy {
- configure(groovyOptions.forkOptions) {
- memoryMaximumSize = '1g'
- jvmArgs = ['-Xms512m', '-Xmx1g']
- if (specifyMaxPermSize){
- jvmArgs << '-XX:MaxPermSize=512m'
- }
- }
- }
-
tasks.withType(Test) {
- useTestNG()
-
- options.suites("src/test/conf/testng.xml")
- if (specifyMaxPermSize){
- maxHeapSize "400M"
- jvmArgs("-XX:MaxPermSize=200m")
- }else{
- maxHeapSize "600M"
- }
-
- // Needed to have XMLTokenStreamTests.testStreamEncoding() passing on
Java 9+
- if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_1_9)) {
- jvmArgs("--add-opens=java.base/java.nio.charset=ALL-UNNAMED");
- }
+// useTestNG()
+
+// options.suites("src/test/conf/testng.xml")
// Turn off live service reloading
systemProperties["tapestry.service-reloading-enabled"] = "false"
+
+
systemProperties["java.io.tmpdir"] = temporaryDir.absolutePath
- jvmArgs("-Dfile.encoding=UTF-8")
-
- environment.LANG = 'en_US.UTF-8'
-
if (continuousIntegrationBuild) {
// Travis runs our builds with TERM=dumb and kills it if we don't
produce any
// output for 10 minutes, so we log some task execution progress
@@ -252,14 +184,13 @@ subprojects {
.replaceAll("tapestry5", "tapestry")
.replaceAll("tapestry-", "")
.replaceAll("-", ""))
- if (projectDir.getName().equals("tapestry-version-migrator")) {
- attributes("Main-Class":
"org.apache.tapestry5.versionmigrator.Main")
- }
}
}
assemble.dependsOn(processResources, compileJava, jar)
+
+ // TODO can we just use java.withSourcesJar() in Gradle 7.4.1?
task sourcesJar(type: Jar) {
dependsOn classes
classifier "sources"
@@ -358,6 +289,7 @@ subprojects {
}
}
+ }
}
subprojects.each { project.evaluationDependsOn(it.name) }
@@ -382,73 +314,76 @@ subprojects {
}
}
-// Cribbed from
https://github.com/hibernate/hibernate-core/blob/master/release/release.gradle#L19
-
-task aggregateJavadoc(type: Javadoc) {
- dependsOn configurations.javadoc
- group "Documentation"
-
- description "Build the aggregated JavaDocs for all modules"
- maxMemory "512m"
- destinationDir file("$buildDir/documentation/javadocs")
-
- def tapestryStylesheet = file("src/javadoc/stylesheet7.css")
- int thisYear = java.time.Year.now().getValue()
-
- def allMainSourceSets = subprojects*.sourceSets*.main.flatten()
- def allMainJavaFiles = allMainSourceSets*.java
- def allMainJavaSrcDirs = allMainJavaFiles*.srcDirs
-
- options {
- splitIndex true
- linkSource true
- stylesheetFile tapestryStylesheet
- windowTitle "Tapestry API - ${project.version}"
- header "Tapestry API - ${project.version}"
- docTitle "Tapestry API - ($project.version)"
- bottom "${project.version} - Copyright © 2003-${thisYear} <a
href=\"http://tapestry.apache.org/\">The Apache Software Foundation</a>."
- use = true // 'use' seems to be a reserved word for the DSL
- links "https://docs.oracle.com/javase/8/docs/api/"
- links "https://docs.oracle.com/javaee/7/api/"
- if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
- tagletPath Collections.unmodifiableList(new ArrayList<>((Set)
configurations.javadoc.files))
- }
- // Uncomment jFlags to debug `./gradlew aggregateJavadoc`
-// jFlags '-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
- addStringOption '-source-path',
files(allMainJavaSrcDirs.flatten()).asPath
- addStringOption 'source', '8'
- taglets "org.apache.tapestry5.javadoc.TapestryDocTaglet"
- }
-
- exclude "org/apache/tapestry5/internal/plastic/asm/**"
- exclude "org/apache/tapestry5/internal/webresources/**"
- exclude "org/apache/tapestry5/webresources/modules/**"
-
- source allMainJavaFiles
-
- classpath += files(allMainSourceSets*.compileClasspath)
- inputs.files allMainJavaSrcDirs
-
- // As part of generating the documentation, ALSO copy any related files:
- // Any extra images (Tapestry logo)
- // Any images stored under src/main/java ... everything but .java, .xdoc
and package.html
-
- doLast {
- copy {
- from allMainJavaSrcDirs
- into aggregateJavadoc.destinationDir
- exclude "**/*.java"
- exclude "**/*.xdoc"
- exclude "**/package.html"
- }
-
- copy {
- from file("src/javadoc/images")
- into aggregateJavadoc.destinationDir
- }
- }
-}
+// Perhaps we can leverage the
https://docs.freefair.io/gradle-plugins/current/reference/#_io_freefair_aggregate_javadoc
plugin to simplify aggreagted Javadoc generation.
+//
+//// Cribbed from
https://github.com/hibernate/hibernate-core/blob/master/release/release.gradle#L19
+//
+//task aggregateJavadoc(type: Javadoc) {
+// dependsOn configurations.javadoc
+// group "Documentation"
+//
+// description "Build the aggregated JavaDocs for all modules"
+// maxMemory "512m"
+// destinationDir file("$buildDir/documentation/javadocs")
+//
+// def tapestryStylesheet = file("src/javadoc/stylesheet7.css")
+// int thisYear = java.time.Year.now().getValue()
+//
+// def allMainSourceSets = subprojects*.sourceSets*.main.flatten()
+// def allMainJavaFiles = allMainSourceSets*.java
+// def allMainJavaSrcDirs = allMainJavaFiles*.srcDirs
+//
+// options {
+// splitIndex true
+// linkSource true
+// stylesheetFile tapestryStylesheet
+// windowTitle "Tapestry API - ${project.version}"
+// header "Tapestry API - ${project.version}"
+// docTitle "Tapestry API - ($project.version)"
+// bottom "${project.version} - Copyright © 2003-${thisYear} <a
href=\"http://tapestry.apache.org/\">The Apache Software Foundation</a>."
+// use = true // 'use' seems to be a reserved word for the DSL
+// links "https://docs.oracle.com/javase/8/docs/api/"
+// links "https://docs.oracle.com/javaee/7/api/"
+// if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
+// tagletPath Collections.unmodifiableList(new ArrayList<>((Set)
configurations.javadoc.files))
+// }
+// // Uncomment jFlags to debug `./gradlew aggregateJavadoc`
+//// jFlags '-Xdebug',
'-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005'
+// addStringOption '-source-path',
files(allMainJavaSrcDirs.flatten()).asPath
+// addStringOption 'source', '8'
+// taglets "org.apache.tapestry5.javadoc.TapestryDocTaglet"
+// }
+//
+// exclude "org/apache/tapestry5/internal/plastic/asm/**"
+// exclude "org/apache/tapestry5/internal/webresources/**"
+// exclude "org/apache/tapestry5/webresources/modules/**"
+//
+// source allMainJavaFiles
+//
+// classpath += files(allMainSourceSets*.compileClasspath)
+//
+// inputs.files allMainJavaSrcDirs
+//
+// // As part of generating the documentation, ALSO copy any related files:
+// // Any extra images (Tapestry logo)
+// // Any images stored under src/main/java ... everything but .java, .xdoc
and package.html
+//
+// doLast {
+// copy {
+// from allMainJavaSrcDirs
+// into aggregateJavadoc.destinationDir
+// exclude "**/*.java"
+// exclude "**/*.xdoc"
+// exclude "**/package.html"
+// }
+//
+// copy {
+// from file("src/javadoc/images")
+// into aggregateJavadoc.destinationDir
+// }
+// }
+//}
task coffeeScriptDocs(type: Exec) {
group "Documentation"
@@ -473,14 +408,15 @@ task coffeeScriptDocs(type: Exec) {
-dependencies {
- if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
- meta aggregateJavadoc.outputs.files
- }
-}
+//dependencies {
+// if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
+// meta aggregateJavadoc.outputs.files
+// }
+//}
+
task combinedJacocoReport(type:JacocoReport){
- def subprojectsToConsider = subprojects.findAll {it.name != 'quickstart' &&
it.name != 'beanmodel' && it.name != 'commons' && it.name !=
'genericsresolver-guava' && it.name != 'tapestry5-annotations' && it.name !=
'tapestry-internal-test' && it.name != 'tapestry-runner' && it.name !=
'tapestry-test-constants' && it.name != 'tapestry-test-data' && it.name !=
'tapestry-ioc-jcache'}
+ def subprojectsToConsider = subprojects.findAll {it.name != 'quickstart' &&
it.name != 'beanmodel' && it.name != 'commons' && it.name !=
'genericsresolver-guava' && it.name != 'tapestry5-annotations' && it.name !=
'tapestry-internal-test' && it.name != 'tapestry-runner' && it.name !=
'tapestry-test-constants' && it.name != 'tapestry-test-data' && it.name !=
'tapestry-ioc-jcache' && it.name != 'platform'}
dependsOn = subprojectsToConsider.test
additionalSourceDirs.from(files(subprojectsToConsider.sourceSets.main.allSource.srcDirs))
sourceDirectories.from(files(subprojectsToConsider.sourceSets.main.allSource.srcDirs))
@@ -508,7 +444,7 @@ task continuousIntegration {
// tapestry-javadoc doesn't work with Java 8 anymore. That's why it's only
added if != 8.
def dependants = [subprojects.build, 'tapestry-core:testWithPrototype',
combinedJacocoReport]
if (JavaVersion.current() != JavaVersion.VERSION_1_8) {
- dependants << aggregateJavadoc
+ // dependants << aggregateJavadoc
}
dependsOn dependants
description "Task executed on Jenkins CI server after Git commits"
@@ -536,7 +472,7 @@ task zippedSources(type: Zip) {
}
task zippedApidoc(type: Zip) {
- dependsOn aggregateJavadoc
+ // dependsOn aggregateJavadoc
description "Zip archive of the project's aggregate JavaDoc and
CoffeeScript documentation"
group "Release artifact"
@@ -554,7 +490,7 @@ task zippedApidoc(type: Zip) {
exclude "*.html"
}
- into "apidocs", { from aggregateJavadoc.outputs.files }
+ // into "apidocs", { from aggregateJavadoc.outputs.files }
into "coffeescript", { from coffeeScriptDocs.outputs.files }
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index c08ff05d4..dc0c802a8 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -1,10 +1,12 @@
-apply plugin: "groovy"
+plugins {
+ id 'groovy'
+ id 'groovy-gradle-plugin'
+}
repositories {
- mavenCentral()
+ mavenCentral()
}
-
dependencies {
implementation ("ro.isdc.wro4j:wro4j-extensions:1.8.0"){
exclude group: 'org.jruby'
diff --git a/buildSrc/src/main/groovy/tapestry.base.gradle
b/buildSrc/src/main/groovy/tapestry.base.gradle
new file mode 100644
index 000000000..0be13ca85
--- /dev/null
+++ b/buildSrc/src/main/groovy/tapestry.base.gradle
@@ -0,0 +1,19 @@
+/**
+ * This is a Gradle Convention Plugin serving to share basic build logic
between all Tapestry subprojects.
+ * See
https://docs.gradle.org/7.4.1/userguide/sharing_build_logic_between_subprojects.html#sec:convention_plugins
+ *
+ * It's written as a script plugin (as opposed to a binary plugin).
+ * See
https://docs.gradle.org/7.4.1/userguide/plugins.html#sec:types_of_plugins
+ */
+plugins {
+ id 'base'
+ id 'eclipse'
+ id 'idea'
+}
+
+group = 'org.apache.tapestry'
+
+configurations {
+ // Non-code artifacts, such as sources JARs and zipped JavaDocs
+ meta
+}
diff --git a/buildSrc/src/main/groovy/tapestry.java.gradle
b/buildSrc/src/main/groovy/tapestry.java.gradle
new file mode 100644
index 000000000..3905d0005
--- /dev/null
+++ b/buildSrc/src/main/groovy/tapestry.java.gradle
@@ -0,0 +1,105 @@
+/**
+ * This is a Gradle Convention Plugin serving to share Java-related build
logic between the various Tapestry subprojects.
+ * See
https://docs.gradle.org/7.4.1/userguide/sharing_build_logic_between_subprojects.html#sec:convention_plugins
+ *
+ * It's written as a script plugin (as opposed to a binary plugin).
+ * See
https://docs.gradle.org/7.4.1/userguide/plugins.html#sec:types_of_plugins
+ */
+plugins {
+ id 'tapestry.base'
+ id 'java-library' // makes features of 'java' plugin implicitly
available
+ id 'groovy' // mostly for testing
+ id 'jvm-test-suite'
+ id 'jacoco'
+ id 'project-report'
+ // id 'maven-publish'
+}
+
+java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(8)
+ }
+}
+
+// See http://jira.codehaus.org/browse/GRADLE-784
+sourceSets {
+ main {
+ compileClasspath += configurations.provided
+ }
+ test {
+ compileClasspath += configurations.provided
+ runtimeClasspath += configurations.provided
+ }
+}
+
+idea.module {
+ scopes.PROVIDED.plus += [configurations.provided]
+}
+
+eclipse.classpath.plusConfigurations += [configurations.provided]
+
+dependencies {
+
+ api platform(project(':platform'))
+
+}
+
+String jdkVersion = System.properties['java.version']
+def jdkMajorVersion = jdkVersion.substring(0, jdkVersion.indexOf(".")) // 1,
9, 10...
+def specifyMaxPermSize = jdkVersion ==~ /1\.[67].+/
+
+compileTestGroovy {
+ configure(groovyOptions.forkOptions) {
+ memoryMaximumSize = '1g'
+ jvmArgs = ['-Xms512m', '-Xmx1g']
+
+ if (specifyMaxPermSize){
+ jvmArgs << '-XX:MaxPermSize=512m'
+ }
+ }
+}
+
+testing {
+ suites { // a test suite is a collection of JVM-based tests
+ test { // this is the built-in 'test' test suite
+ useTestNG()
+ dependencies {
+ implementation 'org.spockframework:spock-core'
+ runtimeOnly 'org.slf4j:slf4j-log4j12'
+ }
+ targets {
+ all {
+ testTask.configure {
+
+ // Needed to have
XMLTokenStreamTests.testStreamEncoding() passing on Java 9+
+ if
(JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_1_9)) {
+ // TODO actually worked
without when compiling with Java 17
+ //
jvmArgs("--add-opens=java.base/java.nio.charset=ALL-UNNAMED");
+ }
+
+ if (specifyMaxPermSize) {
+ maxHeapSize "400M"
+
jvmArgs("-XX:MaxPermSize=200m")
+ } else {
+ maxHeapSize "600M"
+ }
+
+ jvmArgs("-Dfile.encoding=UTF-8")
+ environment.LANG = 'en_US.UTF-8'
+
+ // Turn off live service
reloading
+ systemProperty
'tapestry.service-reloading-enabled', 'false'
+ systemProperty
'java.io.tmpdir', temporaryDir.absolutePath
+
+
options.suites("src/test/conf/testng.xml")
+
+ }
+ }
+ }
+ }
+ }
+}
+
+jacoco {
+ toolVersion = '0.8.7'
+}
\ No newline at end of file
diff --git a/commons/build.gradle b/commons/build.gradle
index 99cb1d4d9..f26f06f08 100644
--- a/commons/build.gradle
+++ b/commons/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
import org.gradle.plugins.ide.idea.model.*
import t5build.*
diff --git
a/genericsresolver-guava/src/test/java/org/apache/tapestry5/genericsresolverguava/internal/AbstractBeanModelSourceImplTest.java
b/genericsresolver-guava/src/test/java/org/apache/tapestry5/genericsresolverguava/internal/AbstractBeanModelSourceImplTest.java
index c131174a5..dba18db61 100644
---
a/genericsresolver-guava/src/test/java/org/apache/tapestry5/genericsresolverguava/internal/AbstractBeanModelSourceImplTest.java
+++
b/genericsresolver-guava/src/test/java/org/apache/tapestry5/genericsresolverguava/internal/AbstractBeanModelSourceImplTest.java
@@ -519,7 +519,7 @@ public abstract class AbstractBeanModelSourceImplTest
extends IOCTestCase
bean.getSimple().setAge(24);
- assertEquals(age.getConduit().get(bean), new Integer(24));
+ assertEquals(age.getConduit().get(bean), Integer.valueOf(24));
verify();
}
diff --git a/plastic/build.gradle b/plastic/build.gradle
index f5bdee139..f082c7bc0 100644
--- a/plastic/build.gradle
+++ b/plastic/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "High-level runtime transformations of Java classes"
dependencies {
diff --git a/platform/build.gradle b/platform/build.gradle
new file mode 100644
index 000000000..ffd3bbc1b
--- /dev/null
+++ b/platform/build.gradle
@@ -0,0 +1,35 @@
+plugins {
+ id 'tapestry.base'
+ id 'java-platform'
+ id 'maven-publish'
+}
+
+description = 'Gradle platform project for sharing settings across projects.'
+
+dependencies {
+ constraints {
+ def slf4jVersion = '1.7.25'
+ api "org.slf4j:slf4j-api:${slf4jVersion}"
+ api "org.slf4j:slf4j-log4j12:${slf4jVersion}"
+ api 'javax.servlet:javax.servlet-api:3.0.1'
+ }
+}
+
+javaPlatform {
+ // Allow this platform project to have own dependencies, not only
dependency constraints.
+ // This is necessary to have this platform include the constraints from
third party platforms, specifically Spock.
+ allowDependencies()
+}
+
+dependencies {
+ api platform("org.spockframework:spock-bom:2.3-groovy-3.0")
+}
+
+publishing {
+ publications {
+ tapestryPlatform(MavenPublication) {
+ from components.javaPlatform
+ }
+ }
+}
+
diff --git a/settings.gradle b/settings.gradle
index f31e79759..defa53f7f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,5 @@
+//rootProject.name='tapestry-5'
+include "platform"
include "plastic", "tapestry5-annotations", "tapestry-test", "tapestry-func",
"tapestry-ioc", "tapestry-json", "tapestry-http", "tapestry-core"
include "tapestry-hibernate-core", "tapestry-hibernate", "tapestry-jmx",
"tapestry-upload", "tapestry-spring"
include "tapestry-beanvalidator", "tapestry-jpa", "tapestry-kaptcha"
@@ -13,3 +15,25 @@ include "tapestry-webresources", "tapestry-runner",
"tapestry-test-constants"
include "tapestry-ioc-jcache", "beanmodel", "commons",
"genericsresolver-guava", "tapestry-version-migrator"
// include "tapestry-cdi"
include "tapestry-spock", "tapestry-openapi-viewer", "tapestry-rest-jackson"
+
+dependencyResolutionManagement {
+
+ // Warn if a project declares its own repository
+ repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
+
+ repositories {
+
+ mavenLocal()
+
+ mavenCentral()
+
+ // All things JBoss/Hibernate
+ maven {
+ name "JBoss"
+ url
"https://repository.jboss.org/nexus/content/repositories/releases/"
+ }
+
+ }
+
+}
+
diff --git a/tapestry-beanvalidator/build.gradle
b/tapestry-beanvalidator/build.gradle
index 4e510a5ed..5a1170216 100644
--- a/tapestry-beanvalidator/build.gradle
+++ b/tapestry-beanvalidator/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
import t5build.*
description = "Support for JSR-303 Bean Validation via the Hibernate validator
implementation"
diff --git
a/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java
b/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java
index 6e945fcfd..4a7ebe4c4 100644
---
a/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java
+++
b/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java
@@ -19,7 +19,7 @@ import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.testng.annotations.Test;
-@Test(sequential = true, groups = "integration")
+@Test(singleThreaded = true, groups = "integration")
@TapestryTestConfiguration(webAppFolder = "src/test/webapp")
public class TapestryBeanValidationIntegrationTests extends SeleniumTestCase
{
diff --git a/tapestry-clojure/build.gradle b/tapestry-clojure/build.gradle
index d1f044446..b08f030c6 100644
--- a/tapestry-clojure/build.gradle
+++ b/tapestry-clojure/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Allows Clojure functions to be injected into Tapestry services
and components"
dependencies {
diff --git a/tapestry-core/build.gradle b/tapestry-core/build.gradle
index 142197c01..eef6be021 100644
--- a/tapestry-core/build.gradle
+++ b/tapestry-core/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
import org.gradle.plugins.ide.idea.model.*
import org.apache.tools.ant.filters.ReplaceTokens
import t5build.*
@@ -75,7 +79,7 @@ compileTestGroovy.dependsOn compileTestJava
test {
// Needed to have XMLTokenStreamTests.testStreamEncoding() passing on
Java 9+
if (JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_1_9)) {
- jvmArgs("--add-opens=java.base/java.nio.charset=ALL-UNNAMED");
+ // jvmArgs("--add-opens=java.base/java.nio.charset=ALL-UNNAMED");
}
// TAP5-2722
systemProperty 'user.language', 'en'
diff --git a/tapestry-func/build.gradle b/tapestry-func/build.gradle
index fa7b059ea..353088f63 100644
--- a/tapestry-func/build.gradle
+++ b/tapestry-func/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Light-weight functional programming for Flows of values"
dependencies {
diff --git a/tapestry-hibernate-core/build.gradle
b/tapestry-hibernate-core/build.gradle
index f4cde3f0d..d34fe3cc6 100644
--- a/tapestry-hibernate-core/build.gradle
+++ b/tapestry-hibernate-core/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Basic Hibernate services for Tapestry, useable outside of a
Tapestry web application"
diff --git a/tapestry-hibernate/build.gradle b/tapestry-hibernate/build.gradle
index b607b4bb6..e15e55194 100644
--- a/tapestry-hibernate/build.gradle
+++ b/tapestry-hibernate/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Provides support for simple CRUD applications built on top of
Tapestry and Hibernate"
dependencies {
diff --git
a/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/web/integration/TapestryHibernateIntegrationTests.java
b/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/web/integration/TapestryHibernateIntegrationTests.java
index 40703329a..c281d6259 100644
---
a/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/web/integration/TapestryHibernateIntegrationTests.java
+++
b/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/web/integration/TapestryHibernateIntegrationTests.java
@@ -21,7 +21,7 @@ import org.apache.tapestry5.test.TapestryTestConfiguration;
import org.example.app0.entities.User;
import org.testng.annotations.Test;
-@Test(sequential = true, groups = "integration")
+@Test(singleThreaded = true, groups = "integration")
@TapestryTestConfiguration(webAppFolder = "src/test/webapp")
public class TapestryHibernateIntegrationTests extends SeleniumTestCase
{
diff --git a/tapestry-http/build.gradle b/tapestry-http/build.gradle
index 60d888b46..7f06c2a1b 100644
--- a/tapestry-http/build.gradle
+++ b/tapestry-http/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
import org.gradle.plugins.ide.idea.model.*
import org.apache.tools.ant.filters.ReplaceTokens
import t5build.*
diff --git a/tapestry-internal-test/build.gradle
b/tapestry-internal-test/build.gradle
index 9caa72c9b..e3b2dd11b 100644
--- a/tapestry-internal-test/build.gradle
+++ b/tapestry-internal-test/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Internal utilties used to assist with testing; not intended for
outside use"
dependencies {
diff --git a/tapestry-ioc-jcache/build.gradle b/tapestry-ioc-jcache/build.gradle
index 878cbab07..91f26e401 100644
--- a/tapestry-ioc-jcache/build.gradle
+++ b/tapestry-ioc-jcache/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
import org.gradle.plugins.ide.idea.model.*
import t5build.*
diff --git a/tapestry-ioc-junit/build.gradle b/tapestry-ioc-junit/build.gradle
index 39a81a2ca..3e0f32868 100644
--- a/tapestry-ioc-junit/build.gradle
+++ b/tapestry-ioc-junit/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Utilities for junit testing a tapestry-ioc application"
dependencies {
diff --git a/tapestry-ioc/build.gradle b/tapestry-ioc/build.gradle
index 151886d8f..4388d864e 100644
--- a/tapestry-ioc/build.gradle
+++ b/tapestry-ioc/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "A code-centric, high-performance, simple Inversion of Control
container"
dependencies {
diff --git a/tapestry-javadoc/build.gradle b/tapestry-javadoc/build.gradle
index d72b91a73..923c673ad 100644
--- a/tapestry-javadoc/build.gradle
+++ b/tapestry-javadoc/build.gradle
@@ -1,5 +1,16 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "JavaDoc Plugin for Tapestry that generates component reference
documentation for component classes"
+java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(11)
+ }
+}
+
+
dependencies {
implementation project(':tapestry-core')
implementation "commons-lang:commons-lang:2.6"
diff --git a/tapestry-javadoc/src/module-info.java
b/tapestry-javadoc/src/module-info.java
new file mode 100644
index 000000000..043010991
--- /dev/null
+++ b/tapestry-javadoc/src/module-info.java
@@ -0,0 +1,3 @@
+module javadoc {
+ requires jdk.compile
+}
\ No newline at end of file
diff --git a/tapestry-jmx/build.gradle b/tapestry-jmx/build.gradle
index ef371e800..8a60802ca 100644
--- a/tapestry-jmx/build.gradle
+++ b/tapestry-jmx/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Allows easy exposure of Tapestry Services as JMX MBeans"
dependencies {
diff --git
a/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java
b/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java
index 55e504d41..c6ba05f8a 100644
---
a/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java
+++
b/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.jmx.integration;
import org.apache.tapestry5.test.SeleniumTestCase;
import org.testng.annotations.Test;
-@Test(sequential = true, groups = "integration")
+@Test(singleThreaded = true, groups = "integration")
public class TapestryJmxIntegrationTests extends SeleniumTestCase
{
/** TAP5-978 */
diff --git a/tapestry-jpa/build.gradle b/tapestry-jpa/build.gradle
index b03367ba6..953297925 100644
--- a/tapestry-jpa/build.gradle
+++ b/tapestry-jpa/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Provides support for simple CRUD applications built on top of
Tapestry and JPA"
dependencies {
diff --git a/tapestry-json/build.gradle b/tapestry-json/build.gradle
index 055ed9a73..8e945d866 100644
--- a/tapestry-json/build.gradle
+++ b/tapestry-json/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Repackaged, improved (and tested) version of code originally
from https://github.com/tdunning/open-json"
dependencies {
diff --git a/tapestry-kaptcha/build.gradle b/tapestry-kaptcha/build.gradle
index 4b79ed964..5f3e23e57 100644
--- a/tapestry-kaptcha/build.gradle
+++ b/tapestry-kaptcha/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Kaptcha user verification support"
dependencies {
diff --git a/tapestry-latest-java-tests/build.gradle
b/tapestry-latest-java-tests/build.gradle
index 4371b82ff..4023fef06 100644
--- a/tapestry-latest-java-tests/build.gradle
+++ b/tapestry-latest-java-tests/build.gradle
@@ -1,7 +1,17 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Test suite for making sure Tapestry runs on latest Java"
-sourceCompatibility = "17"
-targetCompatibility = "17"
+//sourceCompatibility = "17"
+//targetCompatibility = "17"
+
+java {
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(17)
+ }
+}
tasks.withType(JavaCompile).each {
it.options.compilerArgs.add("--enable-preview")
diff --git a/tapestry-mongodb/build.gradle b/tapestry-mongodb/build.gradle
index 6428ece0d..4c617d0dd 100644
--- a/tapestry-mongodb/build.gradle
+++ b/tapestry-mongodb/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Basic MongoDB services for Tapestry, useable outside of a
Tapestry web application"
dependencies {
diff --git a/tapestry-openapi-viewer/build.gradle
b/tapestry-openapi-viewer/build.gradle
index b6a62e6ff..767a1980f 100644
--- a/tapestry-openapi-viewer/build.gradle
+++ b/tapestry-openapi-viewer/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Embedded OpenAPI (Swagger) viewer for Tapestry, based on
Swagger UI"
dependencies {
diff --git a/tapestry-rest-jackson/build.gradle
b/tapestry-rest-jackson/build.gradle
index aa806f3a4..e01598b0a 100644
--- a/tapestry-rest-jackson/build.gradle
+++ b/tapestry-rest-jackson/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Support for using Jackson Databind with the Tapestry REST
support"
dependencies {
diff --git a/tapestry-runner/build.gradle b/tapestry-runner/build.gradle
index 88acdb405..c285c1197 100644
--- a/tapestry-runner/build.gradle
+++ b/tapestry-runner/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Utilities for running a Tapestry application in Jetty or Tomcat
as part of test suite."
dependencies {
diff --git a/tapestry-spock/build.gradle b/tapestry-spock/build.gradle
index fc06771da..faa757d78 100644
--- a/tapestry-spock/build.gradle
+++ b/tapestry-spock/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Provides support Tapestry injections in Spock specifications"
dependencies {
@@ -9,6 +13,10 @@ dependencies {
testImplementation
"org.junit.jupiter:junit-jupiter:${versions.junitJupiter}"
}
-test {
- useJUnit()
-}
+testing {
+ suites { // a test suite is a collection of JVM-based tests
+ test { // this is the built-in 'test' test suite
+ useJUnitJupiter()
+ }
+ }
+}
\ No newline at end of file
diff --git a/tapestry-spring/build.gradle b/tapestry-spring/build.gradle
index 1b4bb0c34..15bbd04e8 100644
--- a/tapestry-spring/build.gradle
+++ b/tapestry-spring/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Integration of Tapestry with the Spring Inversion Of Control
Container"
dependencies {
diff --git a/tapestry-test-constants/build.gradle
b/tapestry-test-constants/build.gradle
new file mode 100644
index 000000000..a47d0b1f7
--- /dev/null
+++ b/tapestry-test-constants/build.gradle
@@ -0,0 +1,3 @@
+plugins {
+ id 'tapestry.java'
+}
diff --git a/tapestry-test-data/build.gradle b/tapestry-test-data/build.gradle
index 63229bc4f..913a52335 100644
--- a/tapestry-test-data/build.gradle
+++ b/tapestry-test-data/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Utilities for generating random data used when populating
entities"
dependencies {
diff --git a/tapestry-test/build.gradle b/tapestry-test/build.gradle
index faf10b63e..e6a74468f 100644
--- a/tapestry-test/build.gradle
+++ b/tapestry-test/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "[Deprecated] Utilities for integration testing of Tapestry
applications using Selenium"
dependencies {
diff --git a/tapestry-upload/build.gradle b/tapestry-upload/build.gradle
index 7026fabd9..eeb0637f1 100644
--- a/tapestry-upload/build.gradle
+++ b/tapestry-upload/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "File Upload component, with supporting services"
dependencies {
diff --git a/tapestry-version-migrator/build.gradle
b/tapestry-version-migrator/build.gradle
index 04a897d10..ec360ad16 100644
--- a/tapestry-version-migrator/build.gradle
+++ b/tapestry-version-migrator/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Tool to help migrate source code using Tapestry from one
version to another. Initially built for 5.7.0"
dependencies {
diff --git a/tapestry-webresources/build.gradle
b/tapestry-webresources/build.gradle
index 1263d6f9a..ca028d20d 100644
--- a/tapestry-webresources/build.gradle
+++ b/tapestry-webresources/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Integration with WRO4J to perform runtime CoffeeScript
compilation, JavaScript minimization, and more."
//configurations {
diff --git a/tapestry5-annotations/build.gradle
b/tapestry5-annotations/build.gradle
index 4f411a174..f4924211d 100644
--- a/tapestry5-annotations/build.gradle
+++ b/tapestry5-annotations/build.gradle
@@ -1 +1,5 @@
+plugins {
+ id 'tapestry.java'
+}
+
description = "Annotations used with Tapestry, Tapestry-IoC and BeanModel
applications"
\ No newline at end of file