diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 87e768cc78..ff90bf5009 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -138,4 +138,5 @@ changes to this list. * Viktor Kolomeyko (R3) * Wawrzek Niewodniczanski (R3) * Wei Wu Zhang (Commonwealth Bank of Australia) +* William Yang * Zabrina Smith (Northern Trust) diff --git a/api-scanner/build.gradle b/api-scanner/build.gradle index f342acf8c8..3e1e96c0cf 100644 --- a/api-scanner/build.gradle +++ b/api-scanner/build.gradle @@ -6,7 +6,6 @@ description "Generates a summary of the artifact's public API" repositories { mavenCentral() - jcenter() } gradlePlugin { diff --git a/api-scanner/src/main/java/net/corda/plugins/ScanApi.java b/api-scanner/src/main/java/net/corda/plugins/ScanApi.java index 341a559c05..49c8ac531e 100644 --- a/api-scanner/src/main/java/net/corda/plugins/ScanApi.java +++ b/api-scanner/src/main/java/net/corda/plugins/ScanApi.java @@ -318,7 +318,7 @@ private void writeMethods(ApiPrintWriter writer, List methods) { sort(methods); for (MethodInfo method : methods) { if (isVisible(method.getModifiers()) // Only public and protected methods - && !isExcluded(filterAnnotationsFor(method)) // Filter out methods explicitly excluded + && !isExcluded(method) // Filter out methods explicitly excluded && isValid(method.getModifiers(), METHOD_MASK) // Excludes bridge methods && !hasInternalAnnotation(method.getAnnotationNames()) // Excludes methods annotated as @CordaInternal && !isKotlinInternalScope(method)) { @@ -452,9 +452,9 @@ private static boolean isValid(int modifiers, int mask) { return (modifiers & mask) == modifiers; } - private boolean isExcluded(MethodInfo methodWithoutAnnotations) { - final String methodSignature = methodWithoutAnnotations.getMethodName() + methodWithoutAnnotations.getTypeDescriptorStr(); - final String className = methodWithoutAnnotations.getClassName(); + private boolean isExcluded(MethodInfo method) { + final String methodSignature = method.getMethodName() + method.getTypeDescriptorStr(); + final String className = method.getClassName(); return this.excludeMethods.containsKey(className) && this.excludeMethods.get(className).contains(methodSignature); diff --git a/build.gradle b/build.gradle index 0c6efb0663..e29f54013d 100644 --- a/build.gradle +++ b/build.gradle @@ -9,14 +9,13 @@ buildscript { snake_yaml_version = '1.19' commons_io_version = '2.6' assertj_version = '3.12.1' - junit_jupiter_version = '5.4.2' + junit_jupiter_version = '5.5.2' hamcrest_version = '2.1' asm_version = '6.2.1' } repositories { mavenCentral() - jcenter() } dependencies { diff --git a/changelog.md b/changelog.md index 77ef3ffd31..842711fbb4 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,10 @@ ### Version 4.0.47 +* `cordformation`: Add `--base-debug-port=` and `--base-monitoring-port=` options to the `runnodes` script to change the port numbers that the script will begin incrementing from. + +* `publish-utils`: Fix NPE for dependencies without group, name or version when generating POMs from custom Gradle configurations. + ### Version 4.0.46 * `publish-utils`: Generate appropriate `compile` and `runtime` dependencies when publishing from a given Gradle configuration. diff --git a/cordapp/build.gradle b/cordapp/build.gradle index c143b41b6d..b377c84db1 100644 --- a/cordapp/build.gradle +++ b/cordapp/build.gradle @@ -5,7 +5,6 @@ description 'Turns a project into a cordapp project that produces cordapp fat JA repositories { mavenCentral() - jcenter() } gradlePlugin { diff --git a/cordapp/src/test/kotlin/net/corda/plugins/CordappGradleConfigurationsTest.kt b/cordapp/src/test/kotlin/net/corda/plugins/CordappGradleConfigurationsTest.kt index c893891277..393114745f 100644 --- a/cordapp/src/test/kotlin/net/corda/plugins/CordappGradleConfigurationsTest.kt +++ b/cordapp/src/test/kotlin/net/corda/plugins/CordappGradleConfigurationsTest.kt @@ -32,7 +32,7 @@ class CordappGradleConfigurationsTest { | |dependencies { | compile "org.slf4j:slf4j-api:1.7.26" - | runtime "commons-io:commons-io:2.4" + | runtime "commons-io:commons-io:2.6" | cordaCompile "com.google.guava:guava:20.0" | cordaRuntime "javax.servlet:javax.servlet-api:3.1.0" | implementation "javax.persistence:javax.persistence-api:2.2" @@ -77,7 +77,7 @@ class CordappGradleConfigurationsTest { @Test fun testRuntimeIncluded() { assertThat(testProject.output) - .contains("CorDapp dependency: commons-io-2.4.jar") + .contains("CorDapp dependency: commons-io-2.6.jar") assertThat(poms) .anyMatch { it.name == "META-INF/maven/commons-io/commons-io/pom.xml" } } diff --git a/cordapp/src/test/kotlin/net/corda/plugins/CordappLibraryGradleConfigurationsTest.kt b/cordapp/src/test/kotlin/net/corda/plugins/CordappLibraryGradleConfigurationsTest.kt index 144aa66c3d..b06197b617 100644 --- a/cordapp/src/test/kotlin/net/corda/plugins/CordappLibraryGradleConfigurationsTest.kt +++ b/cordapp/src/test/kotlin/net/corda/plugins/CordappLibraryGradleConfigurationsTest.kt @@ -33,7 +33,7 @@ class CordappLibraryGradleConfigurationsTest { | |dependencies { | compile "org.slf4j:slf4j-api:1.7.26" - | runtime "commons-io:commons-io:2.4" + | runtime "commons-io:commons-io:2.6" | cordaCompile "com.google.guava:guava:20.0" | cordaRuntime "javax.servlet:javax.servlet-api:3.1.0" | api "javax.annotation:javax.annotation-api:1.3.2" @@ -87,7 +87,7 @@ class CordappLibraryGradleConfigurationsTest { @Test fun testRuntimeIncluded() { assertThat(testProject.output) - .contains("CorDapp dependency: commons-io-2.4.jar") + .contains("CorDapp dependency: commons-io-2.6.jar") assertThat(poms) .anyMatch { it.name == "META-INF/maven/commons-io/commons-io/pom.xml" } } diff --git a/cordformation/src/noderunner/kotlin/net/corda/plugins/NodeRunner.kt b/cordformation/src/noderunner/kotlin/net/corda/plugins/NodeRunner.kt index a8f411d2cd..9d71678a68 100644 --- a/cordformation/src/noderunner/kotlin/net/corda/plugins/NodeRunner.kt +++ b/cordformation/src/noderunner/kotlin/net/corda/plugins/NodeRunner.kt @@ -6,12 +6,17 @@ import java.util.* private const val HEADLESS_FLAG = "--headless" private const val CAPSULE_DEBUG_FLAG = "--capsule-debug" +private const val BASE_DEBUG_PORT_FLAG = "--base-debug-port=" +private const val BASE_MONITORING_PORT_FLAG = "--base-monitoring-port=" private const val CORDA_JAR_NAME = "corda.jar" private const val CORDA_WEBSERVER_JAR_NAME = "corda-webserver.jar" private const val CORDA_CONFIG_NAME = "node.conf" private const val CORDA_WEBSERVER_CONFIG_NAME = "web-server.conf" private val CORDA_HEADLESS_ARGS = listOf("--no-local-shell") +private const val DEFAULT_BASE_DEBUG_PORT = 5005 +private const val DEFAULT_BASE_MONITORING_PORT = 7005 + private val os by lazy { val osName = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH) if ("mac" in osName || "darwin" in osName) OS.MACOS @@ -21,124 +26,140 @@ private val os by lazy { private enum class OS { MACOS, WINDOWS, LINUX } -private object DebugPortAlloc { - private var basePort = 5005 - internal fun next() = basePort++ -} - -private object MonitoringPortAlloc { - private var basePort = 7005 +private class PortAlloc(private var basePort: Int) { internal fun next() = basePort++ } fun main(args: Array) { - val startedProcesses = mutableListOf() - val headless = ((!isTmux() && GraphicsEnvironment.isHeadless()) || args.contains(HEADLESS_FLAG)) + val isHeadless = ((!isTmux() && GraphicsEnvironment.isHeadless()) || args.contains(HEADLESS_FLAG)) val capsuleDebugMode = args.contains(CAPSULE_DEBUG_FLAG) - val workingDir = File(System.getProperty("user.dir")) - val javaArgs = args.filter { it != HEADLESS_FLAG && it != CAPSULE_DEBUG_FLAG } + val baseDebugPort = parseArg(args, BASE_DEBUG_PORT_FLAG, DEFAULT_BASE_DEBUG_PORT) + println("base debug port set to: $baseDebugPort") + val baseMonitoringPort = parseArg(args, BASE_MONITORING_PORT_FLAG, DEFAULT_BASE_MONITORING_PORT) + println("base monitoring port set to: $baseMonitoringPort") + val javaArgs = args.filter { it != HEADLESS_FLAG && it != CAPSULE_DEBUG_FLAG && !it.startsWith(BASE_DEBUG_PORT_FLAG) && !it.startsWith(BASE_MONITORING_PORT_FLAG) } val jvmArgs = if (capsuleDebugMode) listOf("-Dcapsule.log=verbose") else emptyList() - println("Starting nodes in $workingDir") - workingDir.listFiles { file -> file.isDirectory }.forEach { dir -> - startNode(dir, headless, jvmArgs, javaArgs)?.let { startedProcesses += it } - startWebserver(dir, headless, jvmArgs, javaArgs)?.let { startedProcesses += it } - } - println("Started ${startedProcesses.size} processes") + NodeRunner(baseDebugPort, baseMonitoringPort).run(isHeadless, javaArgs, jvmArgs) println("Finished starting nodes") } -private fun startNode(nodeDir: File, headless: Boolean, jvmArgs: List, javaArgs: List): Process? { - val jarFile = nodeDir.resolve(CORDA_JAR_NAME) - return if(!jarFile.isFile) { - println("No file $CORDA_JAR_NAME found in $nodeDir") - null - } else if(!nodeDir.resolve(CORDA_CONFIG_NAME).isFile) { - println("Node conf file $CORDA_CONFIG_NAME not found in $nodeDir") - null - } else { - val debugPort = DebugPortAlloc.next() - println("Starting $CORDA_JAR_NAME in $nodeDir on debug port $debugPort") - startJar(jarFile, headless, jvmArgs + getDebugArgs(debugPort) + getJolokiaArgs(nodeDir), javaArgs, CORDA_HEADLESS_ARGS) +private class NodeRunner(baseDebugPort: Int, baseMonitoringPort: Int) { + private val debugPortAlloc = PortAlloc(baseDebugPort) + private val monitoringPortAlloc = PortAlloc(baseMonitoringPort) + + fun run(isHeadless: Boolean, javaArgs: List, jvmArgs: List) { + val startedProcesses = mutableListOf() + val workingDir = File(System.getProperty("user.dir")) + println("Starting nodes in $workingDir") + workingDir.listFiles { file -> file.isDirectory }.forEach { dir -> + startNode(dir, isHeadless, jvmArgs, javaArgs)?.let { startedProcesses += it } + startWebserver(dir, isHeadless, jvmArgs, javaArgs)?.let { startedProcesses += it } + } + println("Started ${startedProcesses.size} processes") } -} -private fun startWebserver(nodeDir: File, headless: Boolean, jvmArgs: List, javaArgs: List): Process? { - val jarFile = nodeDir.resolve(CORDA_WEBSERVER_JAR_NAME) - return if(!jarFile.isFile) { - null - } else if(!nodeDir.resolve(CORDA_WEBSERVER_CONFIG_NAME).isFile) { - println("Webserver conf file $CORDA_WEBSERVER_CONFIG_NAME not found in $nodeDir") - null - } else { - println("Starting $CORDA_WEBSERVER_JAR_NAME in $nodeDir") - startJar(jarFile, headless, jvmArgs, javaArgs) + private fun startNode(nodeDir: File, headless: Boolean, jvmArgs: List, javaArgs: List): Process? { + val jarFile = nodeDir.resolve(CORDA_JAR_NAME) + return if (!jarFile.isFile) { + println("No file $CORDA_JAR_NAME found in $nodeDir") + null + } else if (!nodeDir.resolve(CORDA_CONFIG_NAME).isFile) { + println("Node conf file $CORDA_CONFIG_NAME not found in $nodeDir") + null + } else { + val debugPort = debugPortAlloc.next() + println("Starting $CORDA_JAR_NAME in $nodeDir on debug port $debugPort") + startJar(jarFile, headless, jvmArgs + getDebugArgs(debugPort) + getJolokiaArgs(nodeDir), javaArgs, CORDA_HEADLESS_ARGS) + } } -} -fun startJar(jar: File, headless: Boolean, jvmArgs: List, javaArgs: List, headlessArgs: List = emptyList()): Process { - val workingDir = jar.parentFile - val nodeName = workingDir.name - val command = getBaseCommand(jvmArgs, nodeName) + listOf("-jar", jar.absolutePath) + javaArgs - val process = if (headless) startHeadless(command, workingDir, nodeName, headlessArgs) else startWindowed(command, workingDir, nodeName) - if (os == OS.MACOS) Thread.sleep(1000) - return process -} + private fun startWebserver(nodeDir: File, headless: Boolean, jvmArgs: List, javaArgs: List): Process? { + val jarFile = nodeDir.resolve(CORDA_WEBSERVER_JAR_NAME) + return if (!jarFile.isFile) { + null + } else if (!nodeDir.resolve(CORDA_WEBSERVER_CONFIG_NAME).isFile) { + println("Webserver conf file $CORDA_WEBSERVER_CONFIG_NAME not found in $nodeDir") + null + } else { + println("Starting $CORDA_WEBSERVER_JAR_NAME in $nodeDir") + startJar(jarFile, headless, jvmArgs, javaArgs) + } + } -private fun startHeadless(command: List, workingDir: File, nodeName: String, headlessArgs: List = emptyList()): Process { - println("Running command: ${command.joinToString(" ")}") - return ProcessBuilder(command + headlessArgs).redirectError(File("error.$nodeName.log")).inheritIO().directory(workingDir).start() -} + private fun startJar(jar: File, headless: Boolean, jvmArgs: List, javaArgs: List, headlessArgs: List = emptyList()): Process { + val workingDir = jar.parentFile + val nodeName = workingDir.name + val command = getBaseCommand(jvmArgs, nodeName) + listOf("-jar", jar.absolutePath) + javaArgs + val process = if (headless) startHeadless(command, workingDir, nodeName, headlessArgs) else startWindowed(command, workingDir, nodeName) + if (os == OS.MACOS) Thread.sleep(1000) + return process + } -private fun startWindowed(command: List, workingDir: File, nodeName: String): Process { - val params = when (os) { - OS.MACOS -> { - listOf("osascript", "-e", """tell app "Terminal" + private fun startHeadless(command: List, workingDir: File, nodeName: String, headlessArgs: List = emptyList()): Process { + println("Running command: ${command.joinToString(" ")}") + return ProcessBuilder(command + headlessArgs).redirectError(File("error.$nodeName.log")).inheritIO().directory(workingDir).start() + } + + private fun startWindowed(command: List, workingDir: File, nodeName: String): Process { + val params = when (os) { + OS.MACOS -> { + listOf("osascript", "-e", """tell app "Terminal" activate delay 0.5 tell app "System Events" to tell process "Terminal" to keystroke "t" using command down delay 0.5 do script "bash -c 'cd \"$workingDir\" ; \"${command.joinToString("""\" \"""")}\" && exit'" in selected tab of the front window end tell""") - } - OS.WINDOWS -> { - listOf("cmd", "/C", "start ${command.joinToString(" ") { windowsSpaceEscape(it) }}") - } - OS.LINUX -> { - // Start shell to keep window open unless java terminated normally or due to SIGTERM: - val unixCommand = "${unixCommand(command)}; [ $? -eq 0 -o $? -eq 143 ] || sh" - if (isTmux()) { - listOf("tmux", "new-window", "-n", nodeName, unixCommand) - } else { - listOf("xterm", "-T", nodeName, "-e", unixCommand) + } + OS.WINDOWS -> { + listOf("cmd", "/C", "start ${command.joinToString(" ") { windowsSpaceEscape(it) }}") + } + OS.LINUX -> { + // Start shell to keep window open unless java terminated normally or due to SIGTERM: + val unixCommand = "${unixCommand(command)}; [ $? -eq 0 -o $? -eq 143 ] || sh" + if (isTmux()) { + listOf("tmux", "new-window", "-n", nodeName, unixCommand) + } else { + listOf("xterm", "-T", nodeName, "-e", unixCommand) + } } } + println("Running command: ${params.joinToString(" ")}") + return ProcessBuilder(params).directory(workingDir).start() } - println("Running command: ${params.joinToString(" ")}") - return ProcessBuilder(params).directory(workingDir).start() -} -private fun getBaseCommand(baseJvmArgs: List, nodeName: String): List { - val jvmArgs = if (baseJvmArgs.isNotEmpty()) { - listOf("-Dcapsule.jvm.args=${baseJvmArgs.joinToString(separator = " ")}") - } else { - emptyList() + private fun getBaseCommand(baseJvmArgs: List, nodeName: String): List { + val jvmArgs = if (baseJvmArgs.isNotEmpty()) { + listOf("-Dcapsule.jvm.args=${baseJvmArgs.joinToString(separator = " ")}") + } else { + emptyList() + } + return listOf(getJavaPath()) + jvmArgs + listOf("-Dname=$nodeName") } - return listOf(getJavaPath()) + jvmArgs + listOf("-Dname=$nodeName") -} -private fun getDebugArgs(debugPort: Int) = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$debugPort") -private fun getJolokiaArgs(dir: File): List { - val jolokiaJar = File("$dir/drivers").listFiles { _, filename -> - filename.matches("jolokia-jvm-.*-agent\\.jar$".toRegex()) - }.firstOrNull()?.name + private fun getDebugArgs(debugPort: Int) = listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$debugPort") + private fun getJolokiaArgs(dir: File): List { + val jolokiaJar = File("$dir/drivers").listFiles { _, filename -> + filename.matches("jolokia-jvm-.*-agent\\.jar$".toRegex()) + }.firstOrNull()?.name + + return if (jolokiaJar != null) { + val monitoringPort = monitoringPortAlloc.next() + println("Node will expose jolokia monitoring port on $monitoringPort") - return if(jolokiaJar != null) { - val monitoringPort = MonitoringPortAlloc.next() - println("Node will expose jolokia monitoring port on $monitoringPort") + listOf("-javaagent:drivers/$jolokiaJar=port=$monitoringPort,logHandlerClass=net.corda.node.JolokiaSlf4jAdapter") + } else { + emptyList() + } + } +} - listOf("-javaagent:drivers/$jolokiaJar=port=$monitoringPort,logHandlerClass=net.corda.node.JolokiaSlf4jAdapter") - } else { - emptyList() +private fun parseArg(args: Array, flagPrefix: String, defaultValue: Int): Int { + return try { + args.firstOrNull { it.startsWith(flagPrefix) }?.removePrefix(flagPrefix)?.run(Integer::valueOf) ?: defaultValue + } catch (_: NumberFormatException) { + println("Invalid option - using default: $flagPrefix$defaultValue") + defaultValue } } @@ -148,4 +169,4 @@ private fun isTmux() = System.getenv("TMUX")?.isNotEmpty() ?: false // Quoting the entire path does not work, only the space or directory within the path. private fun windowsSpaceEscape(s:String) = s.replace(" ", "\" \"") private fun unixCommand(command: List) = command.map(::quotedFormOf).joinToString(" ") -private fun getJavaPath(): String = File(File(System.getProperty("java.home"), "bin"), "java").path \ No newline at end of file +private fun getJavaPath(): String = File(File(System.getProperty("java.home"), "bin"), "java").path diff --git a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordapp.gradle b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordapp.gradle index 2929428fd0..4e78ef0477 100644 --- a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordapp.gradle +++ b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordapp.gradle @@ -14,7 +14,6 @@ repositories { mavenCentral() maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-dev' } maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' } - maven { url 'https://jitpack.io' } } dependencies { diff --git a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappBackwardsCompatibility.gradle b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappBackwardsCompatibility.gradle index 2929428fd0..4e78ef0477 100644 --- a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappBackwardsCompatibility.gradle +++ b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappBackwardsCompatibility.gradle @@ -14,7 +14,6 @@ repositories { mavenCentral() maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-dev' } maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' } - maven { url 'https://jitpack.io' } } dependencies { diff --git a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappConfig.gradle b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappConfig.gradle index 471cdf5474..729e909c1f 100644 --- a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappConfig.gradle +++ b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappConfig.gradle @@ -14,7 +14,6 @@ repositories { mavenCentral() maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-dev' } maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' } - maven { url 'https://jitpack.io' } } dependencies { diff --git a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappWithOU.gradle b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappWithOU.gradle index a27b9faca2..7c864c178c 100644 --- a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappWithOU.gradle +++ b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithCordappWithOU.gradle @@ -14,7 +14,6 @@ repositories { mavenCentral() maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-dev' } maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' } - maven { url 'https://jitpack.io' } } dependencies { diff --git a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithLocallyBuildCordappAndConfig.gradle b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithLocallyBuildCordappAndConfig.gradle index 548cf5fc9e..2905c62ce1 100644 --- a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithLocallyBuildCordappAndConfig.gradle +++ b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithLocallyBuildCordappAndConfig.gradle @@ -14,7 +14,6 @@ repositories { mavenCentral() maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-dev' } maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' } - maven { url 'https://jitpack.io' } } dependencies { diff --git a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithNetworkParameterOverrides.gradle b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithNetworkParameterOverrides.gradle index d2dde991c4..021c6c6fd7 100644 --- a/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithNetworkParameterOverrides.gradle +++ b/cordformation/src/test/resources/net/corda/plugins/DeploySingleNodeWithNetworkParameterOverrides.gradle @@ -1,7 +1,7 @@ buildscript { ext { corda_group = 'net.corda' - corda_release_version = '4.1-RC01' // TODO: Set to 4.1 when Corda 4.1 is released + corda_release_version = '4.2' finance_release_version = '4.0' jolokia_version = '1.6.0' } @@ -16,7 +16,6 @@ repositories { mavenCentral() maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-dev' } maven { url 'https://ci-artifactory.corda.r3cev.com/artifactory/corda-releases' } - maven { url 'https://jitpack.io' } } dependencies { @@ -50,4 +49,4 @@ task deployNodes(type: net.corda.plugins.Cordform) { cordapps = ["$corda_group:corda-finance-contracts:$finance_release_version", "$corda_group:corda-finance-workflows:$finance_release_version"] } -} \ No newline at end of file +} diff --git a/jar-filter/build.gradle b/jar-filter/build.gradle index da6ce85453..40d013ebe3 100644 --- a/jar-filter/build.gradle +++ b/jar-filter/build.gradle @@ -8,7 +8,6 @@ description 'Deletes or stubs out unwanted elements from Java/Kotlin byte-code.' repositories { mavenCentral() - jcenter() maven { url "https://kotlin.bintray.com/kotlinx/" } } diff --git a/jar-filter/src/test/resources/repositories.gradle b/jar-filter/src/test/resources/repositories.gradle index 2a25f5bbd4..b965e9bb6e 100644 --- a/jar-filter/src/test/resources/repositories.gradle +++ b/jar-filter/src/test/resources/repositories.gradle @@ -1,4 +1,3 @@ repositories { - mavenLocal() - jcenter() + mavenCentral() } diff --git a/jar-filter/unwanteds/build.gradle b/jar-filter/unwanteds/build.gradle index 1413609b3b..04dd8c7a58 100644 --- a/jar-filter/unwanteds/build.gradle +++ b/jar-filter/unwanteds/build.gradle @@ -4,7 +4,6 @@ description 'Test artifacts for the jar-filter plugin.' repositories { mavenCentral() - jcenter() } dependencies { diff --git a/publish-utils/src/main/groovy/net/corda/plugins/MavenMapper.groovy b/publish-utils/src/main/groovy/net/corda/plugins/MavenMapper.groovy index cb00803d7f..d1a3f9e4d4 100644 --- a/publish-utils/src/main/groovy/net/corda/plugins/MavenMapper.groovy +++ b/publish-utils/src/main/groovy/net/corda/plugins/MavenMapper.groovy @@ -66,7 +66,10 @@ class MavenMapper { ) { Configuration configuration = configurations.findByName(configName) if (configuration) { - return configuration.allDependencies.iterator().collect { Dependency dep -> + return configuration.allDependencies.iterator().findAll { Dependency dep -> + dep.version && dep.group + }.collect { + Dependency dep = (Dependency) it ModuleVersionIdentifier id = DefaultModuleVersionIdentifier.newId(dep.group, dep.name, dep.version) String alias = publishedAliases[id] alias == null ? id : DefaultModuleVersionIdentifier.newId(id.group, alias, id.version)