2019-11-28 14:49:39 +00:00
|
|
|
import com.r3.testing.DistributeTestsBy
|
|
|
|
import com.r3.testing.PodLogLevel
|
2023-12-06 09:46:29 +00:00
|
|
|
import net.corda.plugins.apiscanner.GenerateApi
|
|
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
2019-09-03 15:40:08 +00:00
|
|
|
|
2023-12-06 09:46:29 +00:00
|
|
|
import static org.gradle.api.JavaVersion.VERSION_17
|
|
|
|
import static org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
|
2024-01-25 13:51:19 +00:00
|
|
|
import static org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9
|
2019-09-18 09:26:26 +00:00
|
|
|
|
2015-11-03 12:37:19 +00:00
|
|
|
buildscript {
|
2016-12-06 16:29:15 +00:00
|
|
|
// For sharing constants between builds
|
2017-03-24 11:22:53 +00:00
|
|
|
Properties constants = new Properties()
|
2017-03-30 15:27:01 +00:00
|
|
|
file("$projectDir/constants.properties").withInputStream { constants.load(it) }
|
2016-12-06 16:29:15 +00:00
|
|
|
|
2016-11-17 11:03:40 +00:00
|
|
|
// Our version: bump this on release.
|
2019-12-11 17:50:27 +00:00
|
|
|
ext.baseVersion = constants.getProperty("cordaVersion")
|
|
|
|
ext.versionSuffix = constants.getProperty("versionSuffix")
|
|
|
|
|
2022-01-18 11:12:32 +00:00
|
|
|
ext.corda_build_edition = System.getenv("CORDA_BUILD_EDITION")?.trim() ?: "Corda Open Source"
|
2017-11-24 14:32:32 +00:00
|
|
|
ext.corda_platform_version = constants.getProperty("platformVersion")
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
ext.corda_shell_version = constants.getProperty("cordaShellVersion")
|
2017-03-24 11:22:53 +00:00
|
|
|
ext.gradle_plugins_version = constants.getProperty("gradlePluginsVersion")
|
2017-01-03 14:15:23 +00:00
|
|
|
|
|
|
|
// Dependency versions. Can run 'gradle dependencyUpdates' to find new versions of things.
|
|
|
|
//
|
|
|
|
// TODO: Sort this alphabetically.
|
2019-09-11 15:34:51 +00:00
|
|
|
ext.warnings_as_errors = project.hasProperty("compilation.warningsAsErrors") ? project.property("compilation.warningsAsErrors").toBoolean() : false
|
2018-06-12 08:38:14 +00:00
|
|
|
|
|
|
|
ext.quasar_group = 'co.paralleluniverse'
|
2019-09-18 09:26:26 +00:00
|
|
|
// Set version of Quasar according to version of Java used:
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
ext.quasar_version = constants.getProperty("quasarVersion")
|
|
|
|
ext.quasar_classifier = constants.getProperty("quasarClassifier")
|
2019-05-30 09:09:11 +00:00
|
|
|
ext.quasar_exclusions = [
|
2019-09-03 15:40:08 +00:00
|
|
|
'co.paralleluniverse**',
|
|
|
|
'groovy**',
|
|
|
|
'com.esotericsoftware.**',
|
|
|
|
'jdk**',
|
|
|
|
'junit**',
|
|
|
|
'kotlin**',
|
|
|
|
'net.rubygrapefruit.**',
|
|
|
|
'org.gradle.**',
|
|
|
|
'org.apache.**',
|
|
|
|
'org.jacoco.**',
|
|
|
|
'org.junit**',
|
|
|
|
'org.slf4j**',
|
|
|
|
'worker.org.gradle.**',
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
'org.mockito.kotlin**',
|
2019-09-03 15:40:08 +00:00
|
|
|
'org.assertj**',
|
|
|
|
'org.hamcrest**',
|
|
|
|
'org.mockito**',
|
|
|
|
'org.opentest4j**'
|
|
|
|
]
|
2017-05-24 08:58:33 +00:00
|
|
|
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.capsule_version = constants.getProperty("capsuleVersion")
|
2022-10-28 13:41:39 +00:00
|
|
|
ext.open_telemetry_version = constants.getProperty("openTelemetryVersion")
|
|
|
|
ext.open_telemetry_sem_conv_version = constants.getProperty("openTelemetrySemConvVersion")
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.asm_version = constants.getProperty("asmVersion")
|
|
|
|
ext.artemis_version = constants.getProperty("artemisVersion")
|
|
|
|
ext.jackson_version = constants.getProperty("jacksonVersion")
|
2022-04-01 15:58:08 +00:00
|
|
|
ext.jackson_kotlin_version = constants.getProperty("jacksonKotlinVersion")
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.jetty_version = constants.getProperty("jettyVersion")
|
|
|
|
ext.jersey_version = constants.getProperty("jerseyVersion")
|
|
|
|
ext.servlet_version = constants.getProperty("servletVersion")
|
|
|
|
ext.assertj_version = constants.getProperty("assertjVersion")
|
|
|
|
ext.slf4j_version = constants.getProperty("slf4JVersion")
|
|
|
|
ext.log4j_version = constants.getProperty("log4JVersion")
|
2017-04-27 11:22:04 +00:00
|
|
|
ext.bouncycastle_version = constants.getProperty("bouncycastleVersion")
|
2017-03-24 11:22:53 +00:00
|
|
|
ext.guava_version = constants.getProperty("guavaVersion")
|
2018-03-14 16:07:31 +00:00
|
|
|
ext.caffeine_version = constants.getProperty("caffeineVersion")
|
2018-10-02 09:33:17 +00:00
|
|
|
ext.disruptor_version = constants.getProperty("disruptorVersion")
|
2018-04-13 14:17:20 +00:00
|
|
|
ext.metrics_version = constants.getProperty("metricsVersion")
|
2018-08-09 17:17:20 +00:00
|
|
|
ext.metrics_new_relic_version = constants.getProperty("metricsNewRelicVersion")
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.okhttp_version = constants.getProperty("okhttpVersion")
|
|
|
|
ext.netty_version = constants.getProperty("nettyVersion")
|
2022-02-16 18:10:05 +00:00
|
|
|
ext.tcnative_version = constants.getProperty("tcnativeVersion")
|
2017-04-10 12:45:40 +00:00
|
|
|
ext.typesafe_config_version = constants.getProperty("typesafeConfigVersion")
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.fileupload_version = constants.getProperty("fileuploadVersion")
|
|
|
|
ext.kryo_version = constants.getProperty("kryoVersion")
|
|
|
|
ext.kryo_serializer_version = constants.getProperty("kryoSerializerVersion")
|
|
|
|
ext.junit_version = constants.getProperty("junitVersion")
|
|
|
|
ext.junit_vintage_version = constants.getProperty("junitVintageVersion")
|
|
|
|
ext.junit_jupiter_version = constants.getProperty("junitJupiterVersion")
|
|
|
|
ext.junit_platform_version = constants.getProperty("junitPlatformVersion")
|
|
|
|
ext.mockito_version = constants.getProperty("mockitoVersion")
|
|
|
|
ext.mockito_kotlin_version = constants.getProperty("mockitoKotlinVersion")
|
|
|
|
ext.hamkrest_version = constants.getProperty("hamkrestVersion")
|
|
|
|
ext.jopt_simple_version = constants.getProperty("joptSimpleVersion")
|
|
|
|
ext.jansi_version = constants.getProperty("jansiVersion")
|
|
|
|
ext.hibernate_version = constants.getProperty("hibernateVersion")
|
|
|
|
ext.h2_version = constants.getProperty("h2Version")
|
|
|
|
ext.rxjava_version = constants.getProperty("rxjavaVersion")
|
|
|
|
ext.dokka_version = constants.getProperty("dokkaVersion")
|
|
|
|
ext.dependency_checker_version = constants.getProperty("dependencyCheckerVersion")
|
|
|
|
ext.commons_collections_version = constants.getProperty("commonsCollectionsVersion")
|
|
|
|
ext.beanutils_version = constants.getProperty("beanutilsVersion")
|
2017-11-23 22:27:24 +00:00
|
|
|
ext.jsr305_version = constants.getProperty("jsr305Version")
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.shiro_version = constants.getProperty("shiroVersion")
|
2017-12-07 17:22:22 +00:00
|
|
|
ext.artifactory_plugin_version = constants.getProperty('artifactoryPluginVersion')
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.hikari_version = constants.getProperty("hikariVersion")
|
|
|
|
ext.liquibase_version = constants.getProperty("liquibaseVersion")
|
2020-02-11 11:57:51 +00:00
|
|
|
ext.artifactory_contextUrl = 'https://software.r3.com/artifactory'
|
2023-07-12 16:36:57 +00:00
|
|
|
ext.publicArtifactURL = 'https://download.corda.net/maven'
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.docker_compose_rule_version = constants.getProperty("dockerComposeRuleVersion")
|
|
|
|
ext.selenium_version = constants.getProperty("seleniumVersion")
|
|
|
|
ext.ghostdriver_version = constants.getProperty("ghostdriverVersion")
|
2018-06-11 19:34:59 +00:00
|
|
|
ext.proguard_version = constants.getProperty('proguardVersion')
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.jsch_version = constants.getProperty("jschVersion")
|
|
|
|
ext.protonj_version = constants.getProperty("protonjVersion")
|
|
|
|
ext.snappy_version = constants.getProperty("snappyVersion")
|
2019-09-03 15:40:08 +00:00
|
|
|
ext.class_graph_version = constants.getProperty('classgraphVersion')
|
2022-02-22 18:09:30 +00:00
|
|
|
ext.jcabi_manifests_version = constants.getProperty("jcabiManifestsVersion")
|
|
|
|
ext.picocli_version = constants.getProperty("picocliVersion")
|
|
|
|
ext.commons_io_version = constants.getProperty("commonsIoVersion")
|
|
|
|
ext.controlsfx_version = constants.getProperty("controlsfxVersion")
|
2020-02-14 17:31:02 +00:00
|
|
|
ext.detekt_version = constants.getProperty('detektVersion')
|
2020-11-20 10:21:53 +00:00
|
|
|
ext.docker_java_version = constants.getProperty("dockerJavaVersion")
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
ext.fontawesomefx_commons_version = constants.getProperty("fontawesomefxCommonsVersion")
|
|
|
|
ext.fontawesomefx_fontawesome_version = constants.getProperty("fontawesomefxFontawesomeVersion")
|
2023-11-02 17:46:29 +00:00
|
|
|
ext.javaassist_version = constants.getProperty("javaassistVersion")
|
|
|
|
|
2019-09-03 15:40:08 +00:00
|
|
|
ext.corda_revision = {
|
|
|
|
try {
|
|
|
|
"git rev-parse HEAD".execute().text.trim()
|
|
|
|
} catch (Exception ignored) {
|
|
|
|
logger.warn("git is unavailable in build environment")
|
|
|
|
"unknown"
|
|
|
|
}
|
|
|
|
}()
|
2020-05-14 11:57:59 +00:00
|
|
|
ext.corda_docs_link = "https://docs.corda.net/docs/corda-os/$baseVersion"
|
2015-11-03 12:37:19 +00:00
|
|
|
repositories {
|
2016-11-21 17:09:48 +00:00
|
|
|
mavenLocal()
|
2020-07-17 08:39:45 +00:00
|
|
|
// Use system environment to activate caching with Artifactory,
|
|
|
|
// because it is actually easier to pass that during parallel build.
|
|
|
|
// NOTE: it has to be a name of a virtual repository with all
|
|
|
|
// required remote or local repositories!
|
|
|
|
if (System.getenv("CORDA_USE_CACHE")) {
|
|
|
|
maven {
|
|
|
|
name "R3 Maven remote repositories"
|
|
|
|
url "${artifactory_contextUrl}/${System.getenv("CORDA_USE_CACHE")}"
|
|
|
|
authentication {
|
|
|
|
basic(BasicAuthentication)
|
|
|
|
}
|
|
|
|
credentials {
|
|
|
|
username = System.getenv('CORDA_ARTIFACTORY_USERNAME')
|
|
|
|
password = System.getenv('CORDA_ARTIFACTORY_PASSWORD')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
maven {
|
2023-07-12 16:36:57 +00:00
|
|
|
url "${publicArtifactURL}/corda-dependencies-dev"
|
2020-08-03 20:28:26 +00:00
|
|
|
content {
|
|
|
|
includeGroupByRegex 'net\\.corda(\\..*)?'
|
|
|
|
includeGroupByRegex 'com\\.r3(\\..*)?'
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
includeGroup 'co.paralleluniverse'
|
2020-08-03 20:28:26 +00:00
|
|
|
}
|
2020-07-17 08:39:45 +00:00
|
|
|
}
|
|
|
|
maven {
|
2023-07-12 16:36:57 +00:00
|
|
|
url "${publicArtifactURL}/corda-releases"
|
2020-08-03 20:28:26 +00:00
|
|
|
content {
|
|
|
|
includeGroupByRegex 'net\\.corda(\\..*)?'
|
|
|
|
includeGroupByRegex 'com\\.r3(\\..*)?'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
mavenCentral()
|
2024-08-13 13:54:10 +00:00
|
|
|
maven {
|
|
|
|
url "${publicArtifactURL}/jcenter-backup"
|
|
|
|
}
|
2018-03-05 13:01:26 +00:00
|
|
|
}
|
2015-11-03 12:37:19 +00:00
|
|
|
}
|
|
|
|
dependencies {
|
2016-11-25 16:34:32 +00:00
|
|
|
classpath "net.corda.plugins:quasar-utils:$gradle_plugins_version"
|
|
|
|
classpath "net.corda.plugins:cordformation:$gradle_plugins_version"
|
2017-10-09 19:08:08 +00:00
|
|
|
classpath "net.corda.plugins:cordapp:$gradle_plugins_version"
|
2018-05-17 09:09:12 +00:00
|
|
|
classpath "net.corda.plugins:api-scanner:$gradle_plugins_version"
|
2018-07-19 15:35:36 +00:00
|
|
|
classpath "net.corda.plugins:jar-filter:$gradle_plugins_version"
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
classpath "com.guardsquare:proguard-gradle:$proguard_version"
|
2017-09-26 16:32:05 +00:00
|
|
|
classpath 'com.github.ben-manes:gradle-versions-plugin:0.15.0'
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
classpath "org.jetbrains.dokka:dokka-base:$dokka_version"
|
|
|
|
classpath "org.owasp:dependency-check-gradle:$dependency_checker_version"
|
2017-12-07 17:22:22 +00:00
|
|
|
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:$artifactory_plugin_version"
|
2019-05-20 13:26:42 +00:00
|
|
|
// Capsule gradle plugin forked and maintained locally to support Gradle 5.x
|
|
|
|
// See https://github.com/corda/gradle-capsule-plugin
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
classpath "us.kirchmeier:gradle-capsule-plugin:1.0.5_r3"
|
2020-08-06 21:13:57 +00:00
|
|
|
classpath group: "com.r3.testing", name: "gradle-distributed-testing-plugin", version: '1.3.0'
|
2020-04-01 10:03:01 +00:00
|
|
|
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.8"
|
2015-11-03 12:37:19 +00:00
|
|
|
}
|
2020-08-05 11:48:29 +00:00
|
|
|
|
2022-04-04 08:48:18 +00:00
|
|
|
configurations.classpath {
|
|
|
|
// FORCE Gradle to use latest SNAPSHOT plugins.
|
2020-08-05 11:48:29 +00:00
|
|
|
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
|
|
|
|
}
|
2015-11-03 12:37:19 +00:00
|
|
|
}
|
|
|
|
|
2016-08-02 17:15:11 +00:00
|
|
|
plugins {
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
id 'org.jetbrains.kotlin.jvm' apply false
|
|
|
|
id 'org.jetbrains.kotlin.plugin.allopen' apply false
|
|
|
|
id 'org.jetbrains.kotlin.plugin.jpa' apply false
|
ENT-11055: Basic external verification (#7545)
* ENT-11055: Basic external verification
Introduction of the external transaction verifier, a separate JVM process for verifying `SignedTransaction`s. The end goal is for this verifier to be built with Kotlin 1.2 so that it creates a compatible verification environment for transactions with 4.11 contracts. For now however the verifier is built against Kotlin 1.8, same as the node.
External verification is enabled when the the system property `net.corda.node.verification.external` is set to `true`. When enabled, all verification requests made via `SignedTransaction.verify` are sent to the external verifier, regardless of the transaction content. It will do the vast bulk of the verification and then send the result back, namely if an exception occurred. If it did, then it's re-thrown in the node.
The external verifier is a stateless process, with no connection to the node's database. All transaction resolution information needed to create the relevant ledger transaction object are made to the node, which waits in a loop servicing these requests until it receives the result. The verifier Jar is embedded in the Corda node Jar, and is extracted and run when needed for the first time. The node opens up a local port for the verifier to communicate with, which is specified to the verifier in the process command line. This all means there is no extra configuration or deployment required to support external verification.
The existing code had some initial attempts and abstractions to support a future external verification feature. However,
they were either incorrect or didn't quite fit. One such example was `TransactionVerifierService`. It incorrectly operated on the `LedgerTransaction` level, which doesn't work since the transaction needs to be first serialised. Instead a new abstraction, `VerificationSupport` has been introduced, which represents all the operations needed to resolve and verify a `SignedTransaction`, essentially replacing `ServicesForResolution` (a lot of the changes are due to this). The external verifier implements this with a simple RPC mechanism, whilst the node needed a new (internal) `ServiceHub` abstraction, `VerifyingServiceHub`. `ServicesForResolution` hasn't been deleted since it's public API, however all classes implementing it must also implement `VerifyingServiceHub`. This is possible to do without breaking compatibility since `ServicesForResolution` is annotated with `@DoNotImplement`.
Changes to `api-current.txt` were made due to the removal of `TransactionVerifierService`, which was clearly indicated as an internal class, and returning `TransactionBuilder.toLedgerTransactionWithContext` back to an internal method.
* Address review comments
* One bulk load states method
* Merge fix
2023-12-07 11:29:27 +00:00
|
|
|
id 'com.github.johnrengelman.shadow' version '7.1.2' apply false
|
2019-12-11 17:50:27 +00:00
|
|
|
id "org.ajoberstar.grgit" version "4.0.0"
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
id 'corda.root-publish'
|
|
|
|
id "org.jetbrains.dokka" version "1.8.20"
|
2020-01-31 16:47:24 +00:00
|
|
|
}
|
2016-08-02 17:15:11 +00:00
|
|
|
|
|
|
|
apply plugin: 'project-report'
|
|
|
|
apply plugin: 'com.github.ben-manes.versions'
|
2020-08-05 11:48:29 +00:00
|
|
|
apply plugin: 'com.r3.testing.distributed-testing'
|
2019-12-11 17:50:27 +00:00
|
|
|
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
// If the command line project option -PversionFromGit is added to the gradle invocation, we'll resolve
|
2019-12-11 17:50:27 +00:00
|
|
|
// the latest git commit hash and timestamp and create a version postfix from that
|
|
|
|
if (project.hasProperty("versionFromGit")){
|
|
|
|
ext.versionSuffix = "${grgit.head().dateTime.format("yyyyMMdd_HHmmss")}-${grgit.head().abbreviatedId}"
|
|
|
|
}
|
|
|
|
|
|
|
|
// Need the `toString()` call on these, because they need to be converted from GStringImpl to Java Strings.
|
|
|
|
if (ext.versionSuffix != ""){
|
|
|
|
ext.corda_release_version = "${ext.baseVersion}-${ext.versionSuffix}".toString()
|
|
|
|
} else {
|
|
|
|
ext.corda_release_version = "${ext.baseVersion}".toString()
|
|
|
|
}
|
|
|
|
|
2023-12-06 09:46:29 +00:00
|
|
|
logger.lifecycle("JDK: {}", System.getProperty("java.home"))
|
2019-10-30 17:24:34 +00:00
|
|
|
logger.lifecycle("Quasar version: {}", quasar_version)
|
|
|
|
logger.lifecycle("Quasar classifier: {}", quasar_classifier.toString())
|
2020-01-14 08:36:00 +00:00
|
|
|
logger.lifecycle("Building Corda version: {}", corda_release_version)
|
2023-12-06 09:46:29 +00:00
|
|
|
logger.lifecycle("User home: {}", System.getProperty('user.home'))
|
2019-05-20 15:16:49 +00:00
|
|
|
|
2016-08-02 17:15:11 +00:00
|
|
|
allprojects {
|
2024-01-02 17:02:20 +00:00
|
|
|
apply plugin: 'java'
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
apply plugin: 'kotlin-allopen'
|
2016-08-02 17:15:11 +00:00
|
|
|
apply plugin: 'jacoco'
|
2017-10-20 16:58:15 +00:00
|
|
|
apply plugin: 'org.owasp.dependencycheck'
|
2020-04-01 10:03:01 +00:00
|
|
|
apply plugin: 'org.sonarqube'
|
2018-03-28 07:40:28 +00:00
|
|
|
|
|
|
|
allOpen {
|
|
|
|
annotations(
|
|
|
|
"javax.persistence.Entity",
|
|
|
|
"javax.persistence.Embeddable",
|
|
|
|
"javax.persistence.MappedSuperclass"
|
|
|
|
)
|
|
|
|
}
|
2016-08-02 17:15:11 +00:00
|
|
|
|
2017-10-20 16:58:15 +00:00
|
|
|
dependencyCheck {
|
|
|
|
suppressionFile = '.ci/dependency-checker/suppressedLibraries.xml'
|
|
|
|
cveValidForHours = 1
|
|
|
|
format = 'ALL'
|
2019-03-20 13:39:51 +00:00
|
|
|
failOnError = project.property('owasp.failOnError')
|
2018-11-07 09:00:19 +00:00
|
|
|
// by default CVSS is '11' which passes everything. Set between 0-10 to catch vulnerable deps
|
2019-03-20 13:39:51 +00:00
|
|
|
failBuildOnCVSS = project.property('owasp.failBuildOnCVSS').toFloat()
|
2018-12-12 13:02:50 +00:00
|
|
|
|
|
|
|
analyzers {
|
|
|
|
assemblyEnabled = false
|
|
|
|
nuspecEnabled = false
|
|
|
|
nugetconfEnabled = false
|
|
|
|
}
|
2017-10-20 16:58:15 +00:00
|
|
|
}
|
2023-12-06 09:46:29 +00:00
|
|
|
|
|
|
|
sourceCompatibility = VERSION_17
|
|
|
|
targetCompatibility = VERSION_17
|
2016-08-02 17:15:11 +00:00
|
|
|
|
2019-09-18 09:26:26 +00:00
|
|
|
jacoco {
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
toolVersion = "0.8.7"
|
|
|
|
}
|
|
|
|
|
2023-12-13 16:13:45 +00:00
|
|
|
java {
|
|
|
|
withSourcesJar()
|
|
|
|
withJavadocJar()
|
2019-09-18 09:26:26 +00:00
|
|
|
}
|
2019-09-19 09:50:29 +00:00
|
|
|
|
2020-07-07 08:08:58 +00:00
|
|
|
tasks.withType(JavaCompile).configureEach {
|
2019-05-20 15:16:49 +00:00
|
|
|
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" << "-Xlint:-options" << "-parameters"
|
2019-11-06 17:37:06 +00:00
|
|
|
options.compilerArgs << '-XDenableSunApiLintControl'
|
2019-09-11 15:34:51 +00:00
|
|
|
if (warnings_as_errors) {
|
|
|
|
// We cannot fail the build on compiler warnings because we have java warnings that you cannot disable:
|
|
|
|
// Signal is internal proprietary API and may be removed in a future release
|
|
|
|
// otherwise we should have the following line here:
|
|
|
|
// options.compilerArgs << "-Werror"
|
|
|
|
}
|
2018-08-06 10:59:30 +00:00
|
|
|
options.encoding = 'UTF-8'
|
2016-08-02 17:15:11 +00:00
|
|
|
}
|
|
|
|
|
2023-12-06 09:46:29 +00:00
|
|
|
tasks.withType(KotlinCompile).configureEach {
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
compilerOptions {
|
2024-01-25 13:51:19 +00:00
|
|
|
languageVersion = KOTLIN_1_9
|
|
|
|
apiVersion = KOTLIN_1_9
|
2023-12-06 09:46:29 +00:00
|
|
|
jvmTarget = JVM_17
|
2017-04-19 14:39:53 +00:00
|
|
|
javaParameters = true // Useful for reflection.
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
freeCompilerArgs = ['-Xjvm-default=all-compatibility']
|
2019-09-11 15:34:51 +00:00
|
|
|
allWarningsAsErrors = warnings_as_errors
|
2017-04-19 14:39:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-19 09:50:29 +00:00
|
|
|
tasks.register('compileAll') { task ->
|
|
|
|
task.dependsOn tasks.withType(AbstractCompile)
|
|
|
|
}
|
|
|
|
|
2020-07-07 08:08:58 +00:00
|
|
|
tasks.withType(Jar).configureEach { task ->
|
2017-10-06 14:37:33 +00:00
|
|
|
// Includes War and Ear
|
2017-04-19 10:05:27 +00:00
|
|
|
manifest {
|
|
|
|
attributes('Corda-Release-Version': corda_release_version)
|
|
|
|
attributes('Corda-Platform-Version': corda_platform_version)
|
|
|
|
attributes('Corda-Revision': corda_revision)
|
2022-01-18 11:12:32 +00:00
|
|
|
attributes('Corda-Vendor': corda_build_edition)
|
2017-10-06 14:37:33 +00:00
|
|
|
attributes('Automatic-Module-Name': "net.corda.${task.project.name.replaceAll('-', '.')}")
|
2020-05-14 11:57:59 +00:00
|
|
|
attributes('Corda-Docs-Link': corda_docs_link)
|
2017-04-19 10:05:27 +00:00
|
|
|
}
|
|
|
|
}
|
2024-01-03 11:22:03 +00:00
|
|
|
|
2020-07-07 08:08:58 +00:00
|
|
|
tasks.withType(Test).configureEach {
|
2024-01-03 11:22:03 +00:00
|
|
|
jvmArgs += project(":node:capsule").file("src/main/resources/node-jvm-args.txt").readLines()
|
|
|
|
jvmArgs += "--add-modules=jdk.incubator.foreign" // For the SharedMemoryIncremental
|
2020-09-15 12:18:46 +00:00
|
|
|
forkEvery = 20
|
2019-09-18 09:26:26 +00:00
|
|
|
ignoreFailures = project.hasProperty('tests.ignoreFailures') ? project.property('tests.ignoreFailures').toBoolean() : false
|
2018-08-23 08:57:05 +00:00
|
|
|
failFast = project.hasProperty('tests.failFast') ? project.property('tests.failFast').toBoolean() : false
|
2018-05-19 11:59:28 +00:00
|
|
|
|
2019-05-20 13:26:42 +00:00
|
|
|
maxHeapSize = "1g"
|
|
|
|
|
2018-02-23 20:48:39 +00:00
|
|
|
if (project.path.startsWith(':experimental') && System.getProperty("experimental.test.enable") == null) {
|
|
|
|
enabled = false
|
|
|
|
}
|
2018-09-26 12:38:23 +00:00
|
|
|
|
|
|
|
// Required to use Gradle build cache (until Gradle 5.0 is released with default value of "append" set to false)
|
|
|
|
// See https://github.com/gradle/gradle/issues/5269 and https://github.com/gradle/gradle/pull/6419
|
|
|
|
extensions.configure(TypeOf.typeOf(JacocoTaskExtension)) { ex ->
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
// ex.append = false
|
2018-09-26 12:38:23 +00:00
|
|
|
}
|
2019-07-02 18:38:33 +00:00
|
|
|
|
2019-09-03 15:40:08 +00:00
|
|
|
if (name.contains("integrationTest")) {
|
|
|
|
maxParallelForks = (System.env.CORDA_INT_TESTING_FORKS == null) ? 1 : "$System.env.CORDA_INT_TESTING_FORKS".toInteger()
|
2024-01-03 11:22:03 +00:00
|
|
|
} else {
|
|
|
|
maxParallelForks = (System.env.CORDA_TESTING_FORKS == null) ? 1 : "$System.env.CORDA_TESTING_FORKS".toInteger()
|
2019-07-02 18:38:33 +00:00
|
|
|
}
|
2017-05-05 16:30:51 +00:00
|
|
|
|
2024-01-03 11:22:03 +00:00
|
|
|
// Prevent the project from creating temporary files outside of the build directory.
|
|
|
|
systemProperty 'java.io.tmpdir', buildDir.absolutePath
|
|
|
|
systemProperty 'java.security.egd', 'file:/dev/./urandom'
|
2019-10-08 09:45:10 +00:00
|
|
|
}
|
|
|
|
|
2016-11-10 13:14:38 +00:00
|
|
|
group 'net.corda'
|
2017-04-19 10:05:27 +00:00
|
|
|
version "$corda_release_version"
|
2017-02-17 19:51:54 +00:00
|
|
|
|
|
|
|
repositories {
|
2017-03-28 16:17:40 +00:00
|
|
|
mavenLocal()
|
2022-04-11 11:21:49 +00:00
|
|
|
// Prevents cache giving use the wrong artemis
|
|
|
|
mavenCentral {
|
|
|
|
content {
|
|
|
|
includeGroup 'org.apache.activemq'
|
|
|
|
}
|
|
|
|
}
|
2020-07-17 08:39:45 +00:00
|
|
|
// Use system environment to activate caching with Artifactory,
|
|
|
|
// because it is actually easier to pass that during parallel build.
|
|
|
|
// NOTE: it has to be a name of a virtual repository with all
|
|
|
|
// required remote or local repositories!
|
|
|
|
if (System.getenv("CORDA_USE_CACHE")) {
|
|
|
|
maven {
|
|
|
|
name "R3 Maven remote repositories"
|
|
|
|
url "${artifactory_contextUrl}/${System.getenv("CORDA_USE_CACHE")}"
|
|
|
|
authentication {
|
|
|
|
basic(BasicAuthentication)
|
|
|
|
}
|
|
|
|
credentials {
|
|
|
|
username = System.getenv('CORDA_ARTIFACTORY_USERNAME')
|
|
|
|
password = System.getenv('CORDA_ARTIFACTORY_PASSWORD')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2020-08-03 20:28:26 +00:00
|
|
|
maven {
|
2023-07-12 16:36:57 +00:00
|
|
|
url "${publicArtifactURL}/corda-dependencies"
|
2020-08-03 20:28:26 +00:00
|
|
|
content {
|
|
|
|
includeGroupByRegex 'net\\.corda(\\..*)?'
|
|
|
|
includeGroupByRegex 'com\\.r3(\\..*)?'
|
|
|
|
includeGroup 'co.paralleluniverse'
|
|
|
|
includeGroup 'org.crashub'
|
|
|
|
includeGroup 'com.github.bft-smart'
|
2022-01-11 12:57:20 +00:00
|
|
|
includeGroup 'com.github.detro'
|
2020-08-03 20:28:26 +00:00
|
|
|
}
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
metadataSources {
|
|
|
|
mavenPom()
|
|
|
|
artifact()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
maven {
|
|
|
|
url "${publicArtifactURL}/corda-dependencies-dev"
|
|
|
|
content {
|
|
|
|
includeGroup 'co.paralleluniverse'
|
|
|
|
}
|
2020-08-03 20:28:26 +00:00
|
|
|
}
|
|
|
|
maven {
|
2023-07-12 16:36:57 +00:00
|
|
|
url "${publicArtifactURL}/corda-dev"
|
2020-08-03 20:28:26 +00:00
|
|
|
content {
|
|
|
|
includeGroupByRegex 'net\\.corda(\\..*)?'
|
|
|
|
includeGroupByRegex 'com\\.r3(\\..*)?'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
maven {
|
|
|
|
url 'https://repo.gradle.org/gradle/libs-releases'
|
|
|
|
content {
|
|
|
|
includeGroup 'org.gradle'
|
|
|
|
includeGroup 'com.github.detro'
|
|
|
|
}
|
|
|
|
}
|
2022-03-10 17:56:09 +00:00
|
|
|
maven {
|
2023-08-24 15:44:35 +00:00
|
|
|
url "${publicArtifactURL}/corda-releases"
|
2022-03-10 17:56:09 +00:00
|
|
|
content {
|
|
|
|
includeModule('net.corda', 'corda-shell')
|
|
|
|
}
|
|
|
|
}
|
2020-07-17 08:39:45 +00:00
|
|
|
mavenCentral()
|
2024-08-13 13:54:10 +00:00
|
|
|
maven {
|
|
|
|
url "${publicArtifactURL}/jcenter-backup"
|
|
|
|
}
|
2020-07-17 08:39:45 +00:00
|
|
|
}
|
2017-02-17 19:51:54 +00:00
|
|
|
}
|
2017-03-30 19:59:50 +00:00
|
|
|
|
2017-09-22 15:45:48 +00:00
|
|
|
configurations {
|
2024-01-02 17:02:20 +00:00
|
|
|
configureEach {
|
2018-05-03 11:12:54 +00:00
|
|
|
resolutionStrategy {
|
2024-01-02 17:02:20 +00:00
|
|
|
if (pluginManager.hasPlugin("org.jetbrains.kotlin.jvm")) {
|
|
|
|
// Force dependencies to use the same version of Kotlin as Corda.
|
|
|
|
force "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
|
|
|
|
}
|
2018-05-15 11:35:00 +00:00
|
|
|
|
2018-07-17 11:31:44 +00:00
|
|
|
// Force dependencies to use the same version of Guava as Corda.
|
|
|
|
force "com.google.guava:guava:$guava_version"
|
|
|
|
|
2022-07-29 16:33:13 +00:00
|
|
|
// Demand that everything uses our given versions of:
|
|
|
|
// * Netty
|
|
|
|
// * Apache commons-configuration2
|
2018-05-15 11:35:00 +00:00
|
|
|
eachDependency { details ->
|
|
|
|
if (details.requested.group == 'io.netty' && details.requested.name.startsWith('netty-')) {
|
2022-03-08 12:04:26 +00:00
|
|
|
if (details.requested.name.startsWith('netty-tcnative')) {
|
2019-12-18 16:54:39 +00:00
|
|
|
details.useVersion tcnative_version
|
|
|
|
} else {
|
|
|
|
details.useVersion netty_version
|
|
|
|
}
|
2018-05-15 11:35:00 +00:00
|
|
|
}
|
|
|
|
}
|
2022-03-08 12:04:26 +00:00
|
|
|
|
|
|
|
dependencySubstitution {
|
|
|
|
// We want to use SLF4J's version of these bindings: jcl-over-slf4j
|
|
|
|
// Remove any transitive dependency on Apache's version.
|
|
|
|
substitute module('commons-logging:commons-logging') with module("org.slf4j:jcl-over-slf4j:$slf4j_version")
|
|
|
|
|
|
|
|
// Remove any transitive dependency on Logback (e.g. Liquibase 3.6 introduces this dependency)
|
2024-04-03 10:15:00 +00:00
|
|
|
substitute module('ch.qos.logback:logback-classic') with module("org.apache.logging.log4j:log4j-slf4j2-impl:$log4j_version")
|
2022-03-08 12:04:26 +00:00
|
|
|
|
|
|
|
// Netty-All is an uber-jar which contains every Netty module.
|
|
|
|
// Exclude it to force us to use the individual Netty modules instead.
|
|
|
|
substitute module('io.netty:netty-all') with module("io.netty:netty-common:$netty_version")
|
|
|
|
|
|
|
|
// Force dependencies to use the same version of Guava as Corda.
|
|
|
|
substitute module('com.google.guava:guava') with module("com.google.guava:guava:$guava_version")
|
|
|
|
|
|
|
|
// Effectively delete this unused and unwanted transitive dependency of Artemis.
|
|
|
|
substitute module('org.jgroups:jgroups') with module("org.apache.activemq:artemis-commons:$artemis_version")
|
|
|
|
|
2024-04-08 12:09:34 +00:00
|
|
|
// Force use of LTS version of BC everywhere
|
|
|
|
substitute module('org.bouncycastle:bcutil-jdk18on') with module("org.bouncycastle:bcutil-lts8on:$bouncycastle_version")
|
|
|
|
substitute module('org.bouncycastle:bcprov-jdk18on') with module("org.bouncycastle:bcprov-lts8on:$bouncycastle_version")
|
|
|
|
substitute module('org.bouncycastle:bcpkix-jdk18on') with module("org.bouncycastle:bcpkix-lts8on:$bouncycastle_version")
|
2022-03-08 12:04:26 +00:00
|
|
|
}
|
2022-04-04 08:48:18 +00:00
|
|
|
|
|
|
|
// FORCE Gradle to use latest SNAPSHOT dependencies.
|
|
|
|
cacheChangingModulesFor 0, 'seconds'
|
2022-03-08 12:04:26 +00:00
|
|
|
}
|
2017-09-22 15:45:48 +00:00
|
|
|
}
|
2022-03-08 12:04:26 +00:00
|
|
|
|
2024-01-02 17:02:20 +00:00
|
|
|
if (pluginManager.hasPlugin("org.jetbrains.kotlin.jvm")) {
|
|
|
|
// Select all of the compileClasspath and runtimeClasspath etc configurations,
|
|
|
|
// but NOT the "classpath" configuration, as that is used by the Gradle plugins.
|
|
|
|
matching { it.name.endsWith("Classpath") }.configureEach { cfg ->
|
|
|
|
cfg.resolutionStrategy {
|
|
|
|
dependencySubstitution {
|
|
|
|
// Force dependencies to use the same version of Kotlin as Corda.
|
|
|
|
substitute module('org.jetbrains.kotlin:kotlin-stdlib-common') with module("org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version")
|
|
|
|
substitute module('org.jetbrains.kotlin:kotlin-stdlib') with module("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
|
|
|
|
substitute module('org.jetbrains.kotlin:kotlin-reflect') with module("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
|
|
|
|
}
|
2022-03-08 12:04:26 +00:00
|
|
|
}
|
|
|
|
}
|
2017-09-22 15:45:48 +00:00
|
|
|
}
|
2017-03-30 19:59:50 +00:00
|
|
|
}
|
2016-08-02 17:15:11 +00:00
|
|
|
}
|
2022-03-08 12:04:26 +00:00
|
|
|
|
2020-04-01 10:03:01 +00:00
|
|
|
sonarqube {
|
|
|
|
properties {
|
|
|
|
property "sonar.projectName", "Corda"
|
|
|
|
property "sonar.projectKey", "corda"
|
|
|
|
property 'sonar.tests', '**/src/test/**,**/src/smoke-test/**,**/src/integration-test/**,**/src/integration-test-slow/**'
|
|
|
|
property 'sonar.coverage.jacoco.xmlReportPaths', "${rootDir.path}/build/reports/jacoco/jacocoRootReport/jacocoRootReport.xml"
|
|
|
|
property 'detekt.sonar.kotlin.baseline.path', "${rootDir.path}/detekt-baseline.xml"
|
|
|
|
property 'detekt.sonar.kotlin.config.path', "${rootDir.path}/detekt-config.yml"
|
|
|
|
}
|
|
|
|
}
|
2016-08-02 17:15:11 +00:00
|
|
|
|
2019-09-19 17:41:06 +00:00
|
|
|
configurations {
|
|
|
|
detekt
|
|
|
|
}
|
|
|
|
|
2016-11-04 17:53:37 +00:00
|
|
|
// Required for building out the fat JAR.
|
2016-11-04 17:15:06 +00:00
|
|
|
dependencies {
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
implementation project(':node')
|
|
|
|
implementation "com.google.guava:guava:$guava_version"
|
2017-02-24 16:15:30 +00:00
|
|
|
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
// Set to corda implementation to ensure it exists now deploy nodes no longer relies on build
|
|
|
|
implementation project(path: ":node:capsule", configuration: 'runtimeArtifacts')
|
|
|
|
implementation project(path: ":testing:testserver:testcapsule:", configuration: 'runtimeArtifacts')
|
2017-03-09 17:11:37 +00:00
|
|
|
|
|
|
|
// For the buildCordappDependenciesJar task
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
runtimeOnly project(':client:jfx')
|
|
|
|
runtimeOnly project(':client:mock')
|
|
|
|
runtimeOnly project(':client:rpc')
|
|
|
|
runtimeOnly project(':core')
|
|
|
|
runtimeOnly project(':confidential-identities')
|
|
|
|
runtimeOnly project(':finance:workflows')
|
|
|
|
runtimeOnly project(':finance:contracts')
|
|
|
|
runtimeOnly project(':testing:testserver')
|
|
|
|
testImplementation project(':test-utils')
|
2019-09-19 17:41:06 +00:00
|
|
|
detekt 'io.gitlab.arturbosch.detekt:detekt-cli:1.0.1'
|
2016-11-04 17:15:06 +00:00
|
|
|
}
|
|
|
|
|
2017-09-27 22:49:20 +00:00
|
|
|
jar {
|
|
|
|
// Prevent the root project from building an unwanted dummy CorDapp.
|
|
|
|
enabled = false
|
|
|
|
}
|
|
|
|
|
2023-12-06 09:46:29 +00:00
|
|
|
tasks.register('jacocoRootReport', JacocoReport) {
|
2016-07-21 10:11:37 +00:00
|
|
|
dependsOn = subprojects.test
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
// additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
|
|
|
|
// sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
|
|
|
|
// classDirectories = files(subprojects.sourceSets.main.output)
|
|
|
|
// executionData = files(subprojects.jacocoTestReport.executionData)
|
2016-07-21 10:11:37 +00:00
|
|
|
reports {
|
2024-01-02 17:02:20 +00:00
|
|
|
html.required = true
|
|
|
|
xml.required = true
|
|
|
|
csv.required = false
|
2016-07-21 10:11:37 +00:00
|
|
|
}
|
|
|
|
onlyIf = {
|
|
|
|
true
|
|
|
|
}
|
|
|
|
doFirst {
|
|
|
|
executionData = files(executionData.findAll {
|
|
|
|
it.exists()
|
|
|
|
})
|
|
|
|
}
|
2016-07-21 16:40:57 +00:00
|
|
|
}
|
|
|
|
|
2020-02-16 08:21:05 +00:00
|
|
|
tasks.register('detekt', JavaExec) {
|
2019-09-19 17:41:06 +00:00
|
|
|
def input = "$projectDir"
|
|
|
|
def config = "$projectDir/detekt-config.yml"
|
|
|
|
def baseline = "$projectDir/detekt-baseline.xml"
|
2020-02-16 08:21:05 +00:00
|
|
|
def detektPluginsJar = project(':detekt-plugins').tasks.jar
|
|
|
|
def plugins = detektPluginsJar.outputs.files.singleFile
|
2020-02-14 17:31:02 +00:00
|
|
|
def params = ['-i', input, '-c', config, '-b', baseline, '--plugins', plugins]
|
2020-02-16 08:21:05 +00:00
|
|
|
inputs.files(detektPluginsJar, config, baseline)
|
2023-12-06 09:46:29 +00:00
|
|
|
mainClass = "io.gitlab.arturbosch.detekt.cli.Main"
|
2020-02-16 08:21:05 +00:00
|
|
|
classpath = configurations.detekt
|
2019-09-19 17:41:06 +00:00
|
|
|
args(params)
|
|
|
|
}
|
|
|
|
|
2020-02-16 08:21:05 +00:00
|
|
|
tasks.register('detektBaseline', JavaExec) {
|
2023-12-06 09:46:29 +00:00
|
|
|
mainClass = "io.gitlab.arturbosch.detekt.cli.Main"
|
2019-09-19 17:41:06 +00:00
|
|
|
classpath = configurations.detekt
|
|
|
|
def input = "$projectDir"
|
2019-10-15 14:49:31 +00:00
|
|
|
def config = "$projectDir/detekt-config.yml, $projectDir/detekt-baseline-config.yml"
|
2019-09-19 17:41:06 +00:00
|
|
|
def baseline = "$projectDir/detekt-baseline.xml"
|
|
|
|
def params = ['-i', input, '-c', config, '-b', baseline, '--create-baseline']
|
|
|
|
args(params)
|
|
|
|
}
|
|
|
|
|
2020-07-07 08:08:58 +00:00
|
|
|
tasks.withType(Test).configureEach {
|
2024-01-02 17:02:20 +00:00
|
|
|
reports.html.outputLocation.set(file("${reporting.baseDir}/${name}"))
|
2016-07-21 16:40:57 +00:00
|
|
|
}
|
|
|
|
|
2023-12-06 09:46:29 +00:00
|
|
|
tasks.register('testReport', TestReport) {
|
2018-04-27 08:52:25 +00:00
|
|
|
destinationDir = file("$buildDir/reports/allTests")
|
|
|
|
// Include the results from the `test` task in all subprojects
|
|
|
|
reportOn subprojects*.test
|
|
|
|
}
|
|
|
|
|
2017-03-09 17:11:37 +00:00
|
|
|
// Note: corda.jar is used at runtime so no runtime ZIP is necessary.
|
|
|
|
// Resulting ZIP can be found in "build/distributions"
|
2023-12-06 09:46:29 +00:00
|
|
|
tasks.register('buildCordappDependenciesZip', Zip) {
|
2017-02-24 16:15:30 +00:00
|
|
|
baseName 'corda-deps'
|
Upgrade to gradle 7.6, kotlin 1.8 and jdk 17
Major changes due to JDK 17:
1. JDK17 JCE Provider now has built-in support for eddsas, corda uses
the bouncycastle (i2p) implementation. This PR removes the conflicting
algorithms from the built-in JCE provider.
2. JavaScript scripting has been removed from the JDK, the corda log4j config was using
scripting to conditionally output additional diagnostic info if the MDC
was populated. This PR has removed the scripting.
3. The artifactory plug-ins used are now deprecated, this PR has removed them
and uses the same code as Corda 5 for publishing to artifactory.
4. Javadoc generation has been modified to use the latest dokka plug-ins.
5. Gradle 7.6 has implemented an incredibly annoying change where transitive
dependencies are not put on the compile classpath, so that they have to be
explicitly added as dependencies to projects.
6. Mockito has been updated, which sadly meant that quite a few source files
have to changes to use the new (org.mockito.kotlin) package name. This makes
this PR appear much larger than it is.
7. A number of tests have been marked as ignored to get a green, broadly they fall
into 3 classes.
The first is related to crypto keypair tests, it appears some logic
in the JDK prefers to use the SunJCE implementation and we prefer to use
bouncycastle. I believe this issue can be fixed with better test setup.
The second group is related to our use of a method called "uncheckedCast(..)",
the purpose of this method was to get rid of the annoying unchecked cast compiler
warning that would otherwise exist. It looks like the Kotlin 1.9 compiler type
inference differs and at runtime sometimes the type it infers is "Void" which causes
an exception at runtime. The simplest solution is to use an explicit cast instead of
unchecked cast, Corda 5 have removed unchecked cast from their codebase.
The third class are a number of ActiveMQ tests which appear to have a memory leak somewhere.
2023-03-08 12:19:05 +00:00
|
|
|
from configurations.runtimeOnly
|
|
|
|
from configurations.implementation
|
|
|
|
from configurations.testImplementation
|
2017-03-09 17:11:37 +00:00
|
|
|
from buildscript.configurations.classpath
|
2017-02-24 21:57:34 +00:00
|
|
|
from 'node/capsule/NOTICE' // CDDL notice
|
2017-02-24 16:15:30 +00:00
|
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
|
|
}
|
2017-06-26 17:07:56 +00:00
|
|
|
|
2023-12-06 09:46:29 +00:00
|
|
|
tasks.register('generateApi', GenerateApi) {
|
2017-09-29 15:55:26 +00:00
|
|
|
baseName = "api-corda"
|
|
|
|
}
|
2018-01-17 13:08:00 +00:00
|
|
|
|
|
|
|
// This exists to reduce CI build time when the envvar is set (can save up to 40 minutes)
|
2018-07-11 12:28:01 +00:00
|
|
|
if (file('corda-docs-only-build').exists() || (System.getenv('CORDA_DOCS_ONLY_BUILD') != null)) {
|
|
|
|
if (file('corda-docs-only-build').exists()) {
|
2018-01-31 20:46:31 +00:00
|
|
|
logger.info("Tests are disabled due to presence of file 'corda-docs-only-build' in the project root")
|
|
|
|
} else {
|
|
|
|
logger.info("Tests are disabled due to the presence of envvar CORDA_DOCS_ONLY_BUILD")
|
|
|
|
}
|
2018-01-17 13:08:00 +00:00
|
|
|
|
|
|
|
allprojects {
|
|
|
|
test {
|
|
|
|
exclude '*/**'
|
|
|
|
}
|
|
|
|
|
|
|
|
it.afterEvaluate {
|
2018-07-11 12:28:01 +00:00
|
|
|
if (it.tasks.findByName("integrationTest") != null) {
|
2018-01-17 13:08:00 +00:00
|
|
|
integrationTest {
|
|
|
|
exclude '*/**'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
it.afterEvaluate {
|
2018-07-11 12:28:01 +00:00
|
|
|
if (it.tasks.findByName("smokeTest") != null) {
|
2018-01-17 13:08:00 +00:00
|
|
|
smokeTest {
|
|
|
|
exclude '*/**'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-04-30 11:47:04 +00:00
|
|
|
|
|
|
|
wrapper {
|
2024-06-11 15:45:32 +00:00
|
|
|
gradleVersion = '7.6.4'
|
2018-04-30 11:47:04 +00:00
|
|
|
distributionType = Wrapper.DistributionType.ALL
|
|
|
|
}
|
2018-09-26 12:38:23 +00:00
|
|
|
|
2020-08-05 11:48:29 +00:00
|
|
|
distributedTesting {
|
|
|
|
profilesURL = 'https://raw.githubusercontent.com/corda/infrastructure-profiles/master'
|
|
|
|
|
|
|
|
parallelTestGroups {
|
|
|
|
allParallelIntegrationTest {
|
|
|
|
testGroups 'integrationTest'
|
|
|
|
profile 'generalPurpose.yml'
|
|
|
|
podLogLevel PodLogLevel.INFO
|
|
|
|
distribution DistributeTestsBy.METHOD
|
|
|
|
}
|
|
|
|
allParallelUnitTest {
|
|
|
|
podLogLevel PodLogLevel.INFO
|
|
|
|
testGroups 'test'
|
|
|
|
profile 'generalPurpose.yml'
|
|
|
|
distribution DistributeTestsBy.CLASS
|
|
|
|
}
|
|
|
|
allParallelUnitAndIntegrationTest {
|
|
|
|
testGroups 'test', 'integrationTest'
|
|
|
|
profile 'generalPurpose.yml'
|
|
|
|
distribution DistributeTestsBy.METHOD
|
|
|
|
}
|
|
|
|
allParallelSmokeTest {
|
|
|
|
testGroups 'smokeTest'
|
2020-08-21 10:18:54 +00:00
|
|
|
profile 'regression.yml'
|
2020-08-05 11:48:29 +00:00
|
|
|
distribution DistributeTestsBy.METHOD
|
|
|
|
}
|
|
|
|
allParallelSlowIntegrationTest {
|
|
|
|
testGroups 'slowIntegrationTest'
|
2020-08-21 10:18:54 +00:00
|
|
|
profile 'regression.yml'
|
2020-08-05 11:48:29 +00:00
|
|
|
distribution DistributeTestsBy.METHOD
|
|
|
|
}
|
|
|
|
}
|
2019-09-12 13:08:50 +00:00
|
|
|
}
|