From 898dc6ae09e044900ea032c803065d2e7811ebc6 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Fri, 22 Jan 2021 18:51:58 +0100 Subject: [PATCH 21/59] Removed production flag of npm install --- webconnector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 652a99939..3591a8141 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -95,7 +95,7 @@ task npmInstall(type: Exec) { workingDir = file("${project.projectDir}/frontend") executable = "npm" - args "install", "--production" + args "install" } task npmBuild(type: Exec) { From 509323688f07062602db18091de081111baa30e7 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sat, 23 Jan 2021 08:46:49 +0100 Subject: [PATCH 22/59] Removed Exec type from buildFrontend task --- webconnector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 3591a8141..444bb11a5 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -83,7 +83,7 @@ jar { } // building frontend is not yet working -task buildFrontend(type: Exec) { +task buildFrontend { description = "Installs dependencies from package.json" dependsOn "npmInstall" From 14559323b28b3fadae1ea3268fa428cddf2e2103 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sat, 23 Jan 2021 10:37:21 +0100 Subject: [PATCH 23/59] Build frontend works on windows too --- webconnector/build.gradle | 22 ++++++++++++++++++---- webconnector/fix_symlink.bat | 3 +++ 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 webconnector/fix_symlink.bat diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 444bb11a5..a99000525 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -91,10 +91,16 @@ task buildFrontend { dependsOn "fixWebapp" } +OperatingSystem os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem; + task npmInstall(type: Exec) { workingDir = file("${project.projectDir}/frontend") - executable = "npm" + if(os.isWindows()) { + executable = "npm.cmd" + } else { + executable "npm" + } args "install" } @@ -103,13 +109,21 @@ task npmBuild(type: Exec) { workingDir = file("${project.projectDir}/frontend") - executable = "npm" + if(os.isWindows()) { + executable = "npm.cmd" + } else { + executable "npm" + } args "run", "build" } task fixWebapp(type: Exec) { dependsOn "npmBuild" - executable = "/bin/bash" - args "${project.projectDir}/fix_symlink.sh" + if(os.isWindows()) { + commandLine = ["cmd", "/C", "${project.projectDir}\\fix_symlink.bat", "${project.projectDir}\\frontend\\build\\es6-bundled", "${project.projectDir}\\resources\\webapp"] + } else { + executable = "/bin/bash" + args "${project.projectDir}/fix_symlink.sh" + } } \ No newline at end of file diff --git a/webconnector/fix_symlink.bat b/webconnector/fix_symlink.bat new file mode 100644 index 000000000..336724930 --- /dev/null +++ b/webconnector/fix_symlink.bat @@ -0,0 +1,3 @@ +@echo off +del %2 /Q +xcopy %1 %2 /i /c /k /e /r /y \ No newline at end of file From 6c92a8300d82eb96a5f1e15ec4abaf1e25f6f312 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sun, 24 Jan 2021 10:39:42 +0100 Subject: [PATCH 24/59] Jar manifest classpath --- core/build.gradle | 14 ++++++++------ restmapper/build.gradle | 7 +++++++ webconnector/build.gradle | 7 +++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index 28d68801e..26884bec5 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -61,6 +61,14 @@ tasks.withType(Jar) { destinationDir = file("$projectDir/export/jars") } +jar { + manifest { + attributes("Main-Class": "i5.las2peer.tools.L2pNodeLauncher", + "Implementation-Version": "${project.property('las2peer.version')}", + "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) + } +} + // Besides the standard main and test source sets, we also have two test_help source sets. // These use las2peer core (given by sourceSets.main.output) as their compile classpath. sourceSets { @@ -259,10 +267,4 @@ task jar_testPackageService(type: Jar) { attributes "Library-SymbolicName": "i5.las2peer.testServices.testPackage3" attributes "Library-Version": "1.0" } -} - -jar { - manifest { - attributes "Main-Class": "i5.las2peer.tools.L2pNodeLauncher" - } } \ No newline at end of file diff --git a/restmapper/build.gradle b/restmapper/build.gradle index ffdbb3204..97a0117d4 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -45,4 +45,11 @@ dependencies { // put all .jar files into export/jars folder tasks.withType(Jar) { destinationDir = file("$projectDir/export/jars") +} + +jar { + manifest { + attributes("Implementation-Version": "${project.property('las2peer.version')}", + "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) + } } \ No newline at end of file diff --git a/webconnector/build.gradle b/webconnector/build.gradle index a99000525..84a93983b 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -82,6 +82,13 @@ jar { dependsOn "buildFrontend" } +jar { + manifest { + attributes("Implementation-Version": "${project.property('las2peer.version')}", + "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) + } +} + // building frontend is not yet working task buildFrontend { description = "Installs dependencies from package.json" From 5f6e2987bf97f7af6b94f7ced5f335315e0fbade Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sun, 24 Jan 2021 11:42:48 +0100 Subject: [PATCH 25/59] Javadoc with gradle --- core/build.gradle | 6 ++++++ restmapper/build.gradle | 4 ++++ webconnector/build.gradle | 7 +++++++ webconnector/javadoc.options | 4 ++++ 4 files changed, 21 insertions(+) create mode 100644 webconnector/javadoc.options diff --git a/core/build.gradle b/core/build.gradle index 26884bec5..722e3ecc9 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -27,6 +27,12 @@ compileJava { options.forkOptions.executable = "javac" } +javadoc { + // its important to only use -add-exports here instead of --add-exports (second "-" is added automatically) + doFirst {options.addStringOption("-add-exports", "java.desktop/com.sun.beans.finder=ALL-UNNAMED")} + destinationDir = file("$projectDir/export/javadoc") +} + dependencies { // Use JUnit test framework. // Not just testImplementation, because JUnit asserts are used in main main/java/i5/las2peer/testing/TestSuite.java diff --git a/restmapper/build.gradle b/restmapper/build.gradle index 97a0117d4..76abbeeb0 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -25,6 +25,10 @@ compileJava { options.forkOptions.executable = "javac" } +javadoc { + destinationDir = file("$projectDir/export/javadoc") +} + dependencies { // Use JUnit test framework. testImplementation "junit:junit:${project.property('junit.version')}" diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 84a93983b..9819aeef5 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -29,6 +29,13 @@ compileJava { options.forkOptions.executable = "javac" } +javadoc { + doFirst { + options.optionFiles << file("javadoc.options") + } + destinationDir = file("$projectDir/export/javadoc") +} + dependencies { // Use JUnit test framework. testImplementation "junit:junit:${project.property('junit.version')}" diff --git a/webconnector/javadoc.options b/webconnector/javadoc.options new file mode 100644 index 000000000..2aa17f133 --- /dev/null +++ b/webconnector/javadoc.options @@ -0,0 +1,4 @@ +--add-exports java.base/sun.security.provider=ALL-UNNAMED +--add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED +--add-exports java.base/sun.security.util=ALL-UNNAMED +--add-exports java.base/sun.security.x509=ALL-UNNAMED \ No newline at end of file From 463741ff22e96abb616f91ce240d9afcd939bab7 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sun, 24 Jan 2021 17:21:43 +0100 Subject: [PATCH 26/59] Extended standard gradle clean tasks --- core/build.gradle | 5 +++++ restmapper/build.gradle | 4 ++++ webconnector/build.gradle | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/core/build.gradle b/core/build.gradle index 722e3ecc9..c49882ef2 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -273,4 +273,9 @@ task jar_testPackageService(type: Jar) { attributes "Library-SymbolicName": "i5.las2peer.testServices.testPackage3" attributes "Library-Version": "1.0" } +} + +clean.doLast { + file("tmp").deleteDir() + file("export").deleteDir() } \ No newline at end of file diff --git a/restmapper/build.gradle b/restmapper/build.gradle index 76abbeeb0..b6e2b8f37 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -56,4 +56,8 @@ jar { attributes("Implementation-Version": "${project.property('las2peer.version')}", "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) } +} + +clean.doLast { + file("export").deleteDir() } \ No newline at end of file diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 9819aeef5..66616ba9f 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -140,4 +140,8 @@ task fixWebapp(type: Exec) { executable = "/bin/bash" args "${project.projectDir}/fix_symlink.sh" } +} + +clean.doLast { + file("export").deleteDir() } \ No newline at end of file From d31199da6ea64a19698c8b9a05f814b67fb4f9b4 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sun, 24 Jan 2021 18:35:44 +0100 Subject: [PATCH 27/59] Using extra property for dbis archiva url --- bundle/build.gradle | 2 +- core/build.gradle | 19 ++++++++++--------- gradle.properties | 3 ++- restmapper/build.gradle | 2 +- webconnector/build.gradle | 2 +- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/bundle/build.gradle b/bundle/build.gradle index 74334a672..b21245c5f 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -18,7 +18,7 @@ repositories { // DBIS Archiva maven { - url "https://archiva.dbis.rwth-aachen.de:9911/repository/internal/" + url "${project.property('dbis.archiva.url')}" } } diff --git a/core/build.gradle b/core/build.gradle index c49882ef2..3622c0c5b 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -16,11 +16,13 @@ repositories { // DBIS Archiva maven { - url "https://archiva.dbis.rwth-aachen.de:9911/repository/internal/" + url "${project.property('dbis.archiva.url')}" } } compileJava { + // -XDignore.symbol.file fixes build in JDK8 + // --add-exports fixes build in JDK14 options.compilerArgs += ["-XDignore.symbol.file", "-Xlint:deprecation", "--add-exports", "java.desktop/com.sun.beans.finder=ALL-UNNAMED"] options.fork = true @@ -33,6 +35,13 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } +// TODO +/*task junitdoc(type: Javadoc) { + source = sourceSets.test.allJava + classpath = + destinationDir = file("$projectDir/export/junitdoc") +}*/ + dependencies { // Use JUnit test framework. // Not just testImplementation, because JUnit asserts are used in main main/java/i5/las2peer/testing/TestSuite.java @@ -104,18 +113,10 @@ sourceSets { test { dependsOn "junit_jars" - // TODO: remove test logging - testLogging { - showStandardStreams = true - } - // As soon as one test fails, the build should fail. This speeds up builds running on CI servers. failFast = true - // TODO: is using maxParallelForks allowed? - // TODO: if set to 1 (default) then some tests fail (but if forkEvery = 1, then not), if set to 9 (and without forkEvery = 1) every test works => why? maxParallelForks = 9 - forkEvery = 1 include "**/*Test.class" diff --git a/gradle.properties b/gradle.properties index ab2e78fe7..3088f6b1b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,5 @@ las2peer.version=1.1.0 java.version=14 junit.version=4.13.1 -jersey.version=2.32 \ No newline at end of file +jersey.version=2.32 +dbis.archiva.url=https://archiva.dbis.rwth-aachen.de:9911/repository/internal/ \ No newline at end of file diff --git a/restmapper/build.gradle b/restmapper/build.gradle index b6e2b8f37..6f56c8a44 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -15,7 +15,7 @@ repositories { // DBIS Archiva maven { - url "https://archiva.dbis.rwth-aachen.de:9911/repository/internal/" + url "${project.property('dbis.archiva.url')}" } } diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 66616ba9f..bb3e4d717 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -15,7 +15,7 @@ repositories { // DBIS Archiva maven { - url "https://archiva.dbis.rwth-aachen.de:9911/repository/internal/" + url "${project.property('dbis.archiva.url')}" } } From 7781d1c4fdda4936a5137f01ec8132b0b7737ec5 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sun, 24 Jan 2021 18:46:05 +0100 Subject: [PATCH 28/59] Always run javadoc in build task --- core/build.gradle | 2 ++ restmapper/build.gradle | 2 ++ webconnector/build.gradle | 2 ++ 3 files changed, 6 insertions(+) diff --git a/core/build.gradle b/core/build.gradle index 3622c0c5b..c9b1eed09 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -35,6 +35,8 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } +build.dependsOn "javadoc" + // TODO /*task junitdoc(type: Javadoc) { source = sourceSets.test.allJava diff --git a/restmapper/build.gradle b/restmapper/build.gradle index 6f56c8a44..d12a4306c 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -29,6 +29,8 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } +build.dependsOn "javadoc" + dependencies { // Use JUnit test framework. testImplementation "junit:junit:${project.property('junit.version')}" diff --git a/webconnector/build.gradle b/webconnector/build.gradle index bb3e4d717..76e35270d 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -36,6 +36,8 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } +build.dependsOn "javadoc" + dependencies { // Use JUnit test framework. testImplementation "junit:junit:${project.property('junit.version')}" From 9cf2322a844cd3dc6b87bc70bbfb289397df1ae7 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Fri, 29 Jan 2021 12:48:32 +0100 Subject: [PATCH 29/59] pom file creation --- core/build.gradle | 30 +++++++++++++++++++++++++++--- restmapper/build.gradle | 34 +++++++++++++++++++++++++++++++--- webconnector/build.gradle | 32 ++++++++++++++++++++++++++++---- 3 files changed, 86 insertions(+), 10 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index c9b1eed09..00f5684a9 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,10 +1,12 @@ plugins { id 'java-library' id 'application' + // maven plugin is used to create .pom files + id 'maven-publish' } -group = 'las2peer' -archivesBaseName = group +group = 'i5' +archivesBaseName = 'las2peer' version = "${project.property('las2peer.version')}" mainClassName = "i5.las2peer.tools.L2pNodeLauncher" sourceCompatibility = "${project.property('java.version')}" @@ -40,7 +42,7 @@ build.dependsOn "javadoc" // TODO /*task junitdoc(type: Javadoc) { source = sourceSets.test.allJava - classpath = + //classpath = destinationDir = file("$projectDir/export/junitdoc") }*/ @@ -281,4 +283,26 @@ task jar_testPackageService(type: Jar) { clean.doLast { file("tmp").deleteDir() file("export").deleteDir() +} + +// In .pom file, use "runtime" scope for dependencies declared with api configuration (instead of "compile" scope). +publishing.publications.all { + pom.withXml { + asNode().dependencies."*".findAll() { + it.scope.text() == "compile" && project.configurations.api.allDependencies.find { dep -> dep.name == it.artifactId.text() } + }.each { it.scope*.value = "runtime"} + } +} + +publishing { + publications { + core(MavenPublication) { + from components.java + artifact jar + pom { + artifactId "las2peer" + packaging "jar" + } + } + } } \ No newline at end of file diff --git a/restmapper/build.gradle b/restmapper/build.gradle index d12a4306c..2158bf17d 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -1,10 +1,12 @@ plugins { id 'java-library' id 'application' + // maven plugin is used to create .pom files + id 'maven-publish' } -group = 'las2peer-rest-mapper' -archivesBaseName = group +group = 'i5' +archivesBaseName = 'las2peer-rest-mapper' version = "${project.property('las2peer.version')}" sourceCompatibility = "${project.property('java.version')}" targetCompatibility = "${project.property('java.version')}" @@ -35,7 +37,7 @@ dependencies { // Use JUnit test framework. testImplementation "junit:junit:${project.property('junit.version')}" - compile project(":core") + api project(":core") api "io.swagger:swagger-jersey2-jaxrs:1.5.17" api "org.glassfish.jersey.core:jersey-server:${project.property('jersey.version')}" @@ -62,4 +64,30 @@ jar { clean.doLast { file("export").deleteDir() +} + +// In .pom file, use "runtime" scope for dependencies declared with api configuration (instead of "compile" scope). +// Also las2peer (core) should be a runtime dependency. +publishing.publications.all { + pom.withXml { + asNode().dependencies."*".findAll() { + it.scope.text() == "compile" && project.configurations.api.allDependencies.find { dep -> dep.name == it.artifactId.text() } + }.each { it.scope*.value = "runtime"} + asNode().dependencies."*".findAll() { + it.artifactId.text() == "las2peer" + }.each { it.scope*.value = "runtime"} + } +} + +publishing { + publications { + restmapper(MavenPublication) { + from components.java + artifact jar + pom { + artifactId "las2peer-rest-mapper" + packaging "jar" + } + } + } } \ No newline at end of file diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 76e35270d..5d3be2b8b 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -1,10 +1,12 @@ plugins { - id 'java' + id 'java-library' id 'application' + // maven plugin is used to create .pom files + id 'maven-publish' } -group = 'las2peer-web-connector' -archivesBaseName = group +group = 'i5' +archivesBaseName = 'las2peer-web-connector' version = "${project.property('las2peer.version')}" sourceCompatibility = "${project.property('java.version')}" targetCompatibility = "${project.property('java.version')}" @@ -42,7 +44,7 @@ dependencies { // Use JUnit test framework. testImplementation "junit:junit:${project.property('junit.version')}" - compile project(":restmapper") + implementation project(":restmapper") implementation "com.nimbusds:oauth2-oidc-sdk:4.17" implementation "org.glassfish.jersey.containers:jersey-container-jdk-http:${project.property('jersey.version')}" @@ -146,4 +148,26 @@ task fixWebapp(type: Exec) { clean.doLast { file("export").deleteDir() +} + +// In .pom file, use "runtime" scope for dependencies declared with api configuration (instead of "compile" scope). +publishing.publications.all { + pom.withXml { + asNode().dependencies."*".findAll() { + it.scope.text() == "compile" && project.configurations.api.allDependencies.find { dep -> dep.name == it.artifactId.text() } + }.each { it.scope*.value = "runtime"} + } +} + +publishing { + publications { + webconnector(MavenPublication) { + from components.java + artifact jar + pom { + artifactId "las2peer-web-connector" + packaging "jar" + } + } + } } \ No newline at end of file From 794df241130744e25e36653e32b8687dbc1d8770 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Fri, 29 Jan 2021 13:06:23 +0100 Subject: [PATCH 30/59] pom file creation for bundle --- bundle/build.gradle | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/bundle/build.gradle b/bundle/build.gradle index b21245c5f..18007a9cf 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -3,10 +3,12 @@ plugins { id 'application' // plugin for building the las2peer bundle jar id "com.github.johnrengelman.shadow" version "5.0.0" + // maven plugin is used to create .pom files + id 'maven-publish' } -group = 'las2peer-bundle' -archivesBaseName = group +group = 'i5' +archivesBaseName = 'las2peer-bundle' version = "${project.property('las2peer.version')}" mainClassName = "i5.las2peer.tools.L2pNodeLauncher" sourceCompatibility = "${project.property('java.version')}" @@ -42,4 +44,15 @@ jar { // las2peer bundle jar shadowJar { mergeServiceFiles() +} + +publishing { + publications { + bundle(MavenPublication) { + pom { + artifactId "las2peer-bundle" + packaging "jar" + } + } + } } \ No newline at end of file From 6366ae1530c66c667d18c43ce470f125c3798e67 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Fri, 29 Jan 2021 17:41:16 +0100 Subject: [PATCH 31/59] JUnit javadoc for core and clean task for bundle --- bundle/build.gradle | 4 ++++ core/build.gradle | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bundle/build.gradle b/bundle/build.gradle index 18007a9cf..5475fead3 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -46,6 +46,10 @@ shadowJar { mergeServiceFiles() } +clean.doLast { + file("export").deleteDir() +} + publishing { publications { bundle(MavenPublication) { diff --git a/core/build.gradle b/core/build.gradle index 00f5684a9..dbeb0efdc 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -38,13 +38,13 @@ javadoc { } build.dependsOn "javadoc" +build.dependsOn "junitdoc" -// TODO -/*task junitdoc(type: Javadoc) { +task junitdoc(type: Javadoc) { source = sourceSets.test.allJava - //classpath = + classpath = sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath destinationDir = file("$projectDir/export/junitdoc") -}*/ +} dependencies { // Use JUnit test framework. From e83165629c5f34cf7d75a315d7791693ef311b8b Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Sat, 30 Jan 2021 10:14:10 +0100 Subject: [PATCH 32/59] Fix encoding problem in junitdoc task --- core/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/build.gradle b/core/build.gradle index dbeb0efdc..89adbdeee 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -41,8 +41,9 @@ build.dependsOn "javadoc" build.dependsOn "junitdoc" task junitdoc(type: Javadoc) { - source = sourceSets.test.allJava + doFirst {options.addStringOption("encoding", "iso-8859-1")} classpath = sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath + source = sourceSets.test.java destinationDir = file("$projectDir/export/junitdoc") } From 0c91a5e71614bf14d79d8d749fcd9d08e556f581 Mon Sep 17 00:00:00 2001 From: Aran30 <50965489+Aran30@users.noreply.github.com> Date: Sat, 30 Jan 2021 17:07:55 +0100 Subject: [PATCH 33/59] Test if production flag causes build to fail --- webconnector/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 5d3be2b8b..cfb9cfa03 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -119,7 +119,7 @@ task npmInstall(type: Exec) { } else { executable "npm" } - args "install" + args "install", "--production" } task npmBuild(type: Exec) { @@ -170,4 +170,4 @@ publishing { } } } -} \ No newline at end of file +} From 23408296167cb96421149a7cfc28a5a743468fe3 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Mon, 1 Feb 2021 11:30:27 +0100 Subject: [PATCH 34/59] Remove --production flag on node frontend build --- webconnector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webconnector/build.gradle b/webconnector/build.gradle index cfb9cfa03..b07eefe7f 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -119,7 +119,7 @@ task npmInstall(type: Exec) { } else { executable "npm" } - args "install", "--production" + args "install" } task npmBuild(type: Exec) { From 0c39e04b2fe0c285427ed2f6af78492cd2647025 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Mon, 1 Feb 2021 11:36:05 +0100 Subject: [PATCH 35/59] Publish: using correct repository and las2peer version --- bundle/build.gradle | 11 ++++++++--- core/build.gradle | 34 +++++++++++++++++++++++++++++++--- gradle.properties | 6 ++++-- restmapper/build.gradle | 34 +++++++++++++++++++++++++++++++--- webconnector/build.gradle | 36 ++++++++++++++++++++++++++++++++---- 5 files changed, 106 insertions(+), 15 deletions(-) diff --git a/bundle/build.gradle b/bundle/build.gradle index 5475fead3..c89131190 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -7,9 +7,14 @@ plugins { id 'maven-publish' } +def las2peerRevision = "${project.property('las2peer.revision')}" +def las2peerBuildNumber = "${project.property('las2peer.build.number')}" +def las2peerRelease = System.env.LAS2PEER_RELEASE != null +def las2peerVersion = las2peerRelease ? "$las2peerRevision.$las2peerBuildNumber" : "$las2peerRevision-SNAPSHOT" + group = 'i5' archivesBaseName = 'las2peer-bundle' -version = "${project.property('las2peer.version')}" +version = las2peerVersion mainClassName = "i5.las2peer.tools.L2pNodeLauncher" sourceCompatibility = "${project.property('java.version')}" targetCompatibility = "${project.property('java.version')}" @@ -50,7 +55,7 @@ clean.doLast { file("export").deleteDir() } -publishing { +/*publishing { publications { bundle(MavenPublication) { pom { @@ -59,4 +64,4 @@ publishing { } } } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle index 89adbdeee..ca67fcb10 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -5,9 +5,14 @@ plugins { id 'maven-publish' } +def las2peerRevision = "${project.property('las2peer.revision')}" +def las2peerBuildNumber = "${project.property('las2peer.build.number')}" +def las2peerRelease = System.env.LAS2PEER_RELEASE != null +def las2peerVersion = las2peerRelease ? "$las2peerRevision.$las2peerBuildNumber" : "$las2peerRevision-SNAPSHOT" + group = 'i5' archivesBaseName = 'las2peer' -version = "${project.property('las2peer.version')}" +version = las2peerVersion mainClassName = "i5.las2peer.tools.L2pNodeLauncher" sourceCompatibility = "${project.property('java.version')}" targetCompatibility = "${project.property('java.version')}" @@ -84,7 +89,7 @@ tasks.withType(Jar) { jar { manifest { attributes("Main-Class": "i5.las2peer.tools.L2pNodeLauncher", - "Implementation-Version": "${project.property('las2peer.version')}", + "Implementation-Version": las2peerVersion, "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) } } @@ -299,11 +304,34 @@ publishing { publications { core(MavenPublication) { from components.java - artifact jar pom { artifactId "las2peer" packaging "jar" } } } + + repositories { + maven { + if (las2peerRelease) url = "${project.property('dbis.archiva.url')}" + else url = "${project.property('dbis.archiva.url.snapshots')}" + + credentials { + username = System.env.ARCHIVA_USERNAME + password = System.env.ARCHIVA_PASSWORD + } + } + } +} + +// Task for checking whether the username and password required for publishing to archiva are set as environment variables. +task checkArchivaEnv { + def username = System.env.ARCHIVA_USERNAME + if (username == null) throw new GradleException("Environment variable ARCHIVA_USERNAME is not set, but required for publishing.") + def password = System.env.ARCHIVA_PASSWORD + if (password == null) throw new GradleException("Environment variable ARCHIVA_PASSWORD is not set, but required for publishing.") +} + +tasks.withType(PublishToMavenRepository) { + dependsOn checkArchivaEnv } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3088f6b1b..50a28ceae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,7 @@ -las2peer.version=1.1.0 +las2peer.revision=1.1 +las2peer.build.number=0 java.version=14 junit.version=4.13.1 jersey.version=2.32 -dbis.archiva.url=https://archiva.dbis.rwth-aachen.de:9911/repository/internal/ \ No newline at end of file +dbis.archiva.url=https://archiva.dbis.rwth-aachen.de:9911/repository/internal +dbis.archiva.url.snapshots=https://archiva.dbis.rwth-aachen.de:9911/repository/snapshots \ No newline at end of file diff --git a/restmapper/build.gradle b/restmapper/build.gradle index 2158bf17d..76fd5913a 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -5,9 +5,14 @@ plugins { id 'maven-publish' } +def las2peerRevision = "${project.property('las2peer.revision')}" +def las2peerBuildNumber = "${project.property('las2peer.build.number')}" +def las2peerRelease = System.env.LAS2PEER_RELEASE != null +def las2peerVersion = las2peerRelease ? "$las2peerRevision.$las2peerBuildNumber" : "$las2peerRevision-SNAPSHOT" + group = 'i5' archivesBaseName = 'las2peer-rest-mapper' -version = "${project.property('las2peer.version')}" +version = las2peerVersion sourceCompatibility = "${project.property('java.version')}" targetCompatibility = "${project.property('java.version')}" @@ -57,7 +62,7 @@ tasks.withType(Jar) { jar { manifest { - attributes("Implementation-Version": "${project.property('las2peer.version')}", + attributes("Implementation-Version": las2peerVersion, "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) } } @@ -83,11 +88,34 @@ publishing { publications { restmapper(MavenPublication) { from components.java - artifact jar pom { artifactId "las2peer-rest-mapper" packaging "jar" } } } + + repositories { + maven { + if (las2peerRelease) url = "${project.property('dbis.archiva.url')}" + else url = "${project.property('dbis.archiva.url.snapshots')}" + + credentials { + username = System.env.ARCHIVA_USERNAME + password = System.env.ARCHIVA_PASSWORD + } + } + } +} + +// Task for checking whether the username and password required for publishing to archiva are set as environment variables. +task checkArchivaEnv { + def username = System.env.ARCHIVA_USERNAME + if (username == null) throw new GradleException("Environment variable ARCHIVA_USERNAME is not set, but required for publishing.") + def password = System.env.ARCHIVA_PASSWORD + if (password == null) throw new GradleException("Environment variable ARCHIVA_PASSWORD is not set, but required for publishing.") +} + +tasks.withType(PublishToMavenRepository) { + dependsOn checkArchivaEnv } \ No newline at end of file diff --git a/webconnector/build.gradle b/webconnector/build.gradle index b07eefe7f..51f2ecf25 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -5,9 +5,14 @@ plugins { id 'maven-publish' } +def las2peerRevision = "${project.property('las2peer.revision')}" +def las2peerBuildNumber = "${project.property('las2peer.build.number')}" +def las2peerRelease = System.env.LAS2PEER_RELEASE != null +def las2peerVersion = las2peerRelease ? "$las2peerRevision.$las2peerBuildNumber" : "$las2peerRevision-SNAPSHOT" + group = 'i5' archivesBaseName = 'las2peer-web-connector' -version = "${project.property('las2peer.version')}" +version = las2peerVersion sourceCompatibility = "${project.property('java.version')}" targetCompatibility = "${project.property('java.version')}" @@ -77,7 +82,7 @@ import org.apache.tools.ant.filters.ReplaceTokens processResources { from (sourceSets.main.resources) { include "webapp/src/node-frontend.js" - filter(ReplaceTokens, tokens: [LAS2PEER_VERSION : project.property("las2peer.version")]) + filter(ReplaceTokens, tokens: [LAS2PEER_VERSION : las2peerVersion]) } } @@ -95,7 +100,7 @@ jar { jar { manifest { - attributes("Implementation-Version": "${project.property('las2peer.version')}", + attributes("Implementation-Version": las2peerVersion, "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(" ")) } } @@ -163,11 +168,34 @@ publishing { publications { webconnector(MavenPublication) { from components.java - artifact jar pom { artifactId "las2peer-web-connector" packaging "jar" } } } + + repositories { + maven { + if (las2peerRelease) url = "${project.property('dbis.archiva.url')}" + else url = "${project.property('dbis.archiva.url.snapshots')}" + + credentials { + username = System.env.ARCHIVA_USERNAME + password = System.env.ARCHIVA_PASSWORD + } + } + } +} + +// Task for checking whether the username and password required for publishing to archiva are set as environment variables. +task checkArchivaEnv { + def username = System.env.ARCHIVA_USERNAME + if (username == null) throw new GradleException("Environment variable ARCHIVA_USERNAME is not set, but required for publishing.") + def password = System.env.ARCHIVA_PASSWORD + if (password == null) throw new GradleException("Environment variable ARCHIVA_PASSWORD is not set, but required for publishing.") +} + +tasks.withType(PublishToMavenRepository) { + dependsOn checkArchivaEnv } From ca14430207478082a1ed6fe6f32d766421635864 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Mon, 1 Feb 2021 19:10:27 +0100 Subject: [PATCH 36/59] Removed checkArchivaEnv task --- core/build.gradle | 12 ------------ restmapper/build.gradle | 12 ------------ webconnector/build.gradle | 14 +------------- 3 files changed, 1 insertion(+), 37 deletions(-) diff --git a/core/build.gradle b/core/build.gradle index ca67fcb10..d6e5a09ce 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -322,16 +322,4 @@ publishing { } } } -} - -// Task for checking whether the username and password required for publishing to archiva are set as environment variables. -task checkArchivaEnv { - def username = System.env.ARCHIVA_USERNAME - if (username == null) throw new GradleException("Environment variable ARCHIVA_USERNAME is not set, but required for publishing.") - def password = System.env.ARCHIVA_PASSWORD - if (password == null) throw new GradleException("Environment variable ARCHIVA_PASSWORD is not set, but required for publishing.") -} - -tasks.withType(PublishToMavenRepository) { - dependsOn checkArchivaEnv } \ No newline at end of file diff --git a/restmapper/build.gradle b/restmapper/build.gradle index 76fd5913a..2121d0513 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -106,16 +106,4 @@ publishing { } } } -} - -// Task for checking whether the username and password required for publishing to archiva are set as environment variables. -task checkArchivaEnv { - def username = System.env.ARCHIVA_USERNAME - if (username == null) throw new GradleException("Environment variable ARCHIVA_USERNAME is not set, but required for publishing.") - def password = System.env.ARCHIVA_PASSWORD - if (password == null) throw new GradleException("Environment variable ARCHIVA_PASSWORD is not set, but required for publishing.") -} - -tasks.withType(PublishToMavenRepository) { - dependsOn checkArchivaEnv } \ No newline at end of file diff --git a/webconnector/build.gradle b/webconnector/build.gradle index 51f2ecf25..ac8f99023 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -186,16 +186,4 @@ publishing { } } } -} - -// Task for checking whether the username and password required for publishing to archiva are set as environment variables. -task checkArchivaEnv { - def username = System.env.ARCHIVA_USERNAME - if (username == null) throw new GradleException("Environment variable ARCHIVA_USERNAME is not set, but required for publishing.") - def password = System.env.ARCHIVA_PASSWORD - if (password == null) throw new GradleException("Environment variable ARCHIVA_PASSWORD is not set, but required for publishing.") -} - -tasks.withType(PublishToMavenRepository) { - dependsOn checkArchivaEnv -} +} \ No newline at end of file From b64a06b620aa728e15e988d6efbf50d894a75acb Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Mon, 1 Feb 2021 19:16:16 +0100 Subject: [PATCH 37/59] Add workflow for gradle build --- .github/workflows/gradle.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/gradle.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 000000000..99ab61e93 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,26 @@ +# This workflow will build a Java project with Gradle +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Java CI with Gradle + +on: + push: + branches: [ gradle ] + pull_request: + branches: [ gradle ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 14 + uses: actions/setup-java@v1 + with: + java-version: 14 + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew build \ No newline at end of file From 9590a33121aa52db5e7d2a50044bdd4b8044c576 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Tue, 2 Feb 2021 09:22:55 +0100 Subject: [PATCH 38/59] Fix incorrect string type --- webconnector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webconnector/build.gradle b/webconnector/build.gradle index ac8f99023..dcfd3a7b9 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -82,7 +82,7 @@ import org.apache.tools.ant.filters.ReplaceTokens processResources { from (sourceSets.main.resources) { include "webapp/src/node-frontend.js" - filter(ReplaceTokens, tokens: [LAS2PEER_VERSION : las2peerVersion]) + filter(ReplaceTokens, tokens: [LAS2PEER_VERSION : "$las2peerVersion".toString()]) } } From 4dba0a191e6d31ee52687cf4e2b9dde3150b92d3 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Tue, 2 Feb 2021 10:28:52 +0100 Subject: [PATCH 39/59] Correct name for bundle jar --- bundle/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/bundle/build.gradle b/bundle/build.gradle index c89131190..566ee898a 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -48,6 +48,7 @@ jar { // las2peer bundle jar shadowJar { + archiveClassifier = "" mergeServiceFiles() } From 89e9f1a8c6ace6a80c7a8fbc88b4819a0a3b747a Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Tue, 2 Feb 2021 13:15:04 +0100 Subject: [PATCH 40/59] Added junitdoc tasks for restmapper and webconnector --- restmapper/build.gradle | 7 +++++++ webconnector/build.gradle | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/restmapper/build.gradle b/restmapper/build.gradle index 2121d0513..98ee1dce2 100644 --- a/restmapper/build.gradle +++ b/restmapper/build.gradle @@ -36,7 +36,14 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } +task junitdoc(type: Javadoc) { + classpath = sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath + source = sourceSets.test.java + destinationDir = file("$projectDir/export/junitdoc") +} + build.dependsOn "javadoc" +build.dependsOn "junitdoc" dependencies { // Use JUnit test framework. diff --git a/webconnector/build.gradle b/webconnector/build.gradle index dcfd3a7b9..fb93dc6b8 100644 --- a/webconnector/build.gradle +++ b/webconnector/build.gradle @@ -43,7 +43,14 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } +task junitdoc(type: Javadoc) { + classpath = sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath + source = sourceSets.test.java + destinationDir = file("$projectDir/export/junitdoc") +} + build.dependsOn "javadoc" +build.dependsOn "junitdoc" dependencies { // Use JUnit test framework. From 74d162e91970ba558855b7fae9e1e5286f1b9d82 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Tue, 2 Feb 2021 13:16:31 +0100 Subject: [PATCH 41/59] Only build shadowJar in bundle (disable standard jar task) --- bundle/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bundle/build.gradle b/bundle/build.gradle index 566ee898a..ade39655a 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -7,6 +7,8 @@ plugins { id 'maven-publish' } +jar.enabled = false + def las2peerRevision = "${project.property('las2peer.revision')}" def las2peerBuildNumber = "${project.property('las2peer.build.number')}" def las2peerRelease = System.env.LAS2PEER_RELEASE != null @@ -48,7 +50,9 @@ jar { // las2peer bundle jar shadowJar { + // remove the "-all" at the end of the artifact / file name archiveClassifier = "" + mergeServiceFiles() } From 7ea887e30d755ee27b3df2acde368ff1a9fccebf Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Tue, 2 Feb 2021 13:18:13 +0100 Subject: [PATCH 42/59] Added publish tasks for bundle --- bundle/build.gradle | 24 ++++++++++++++++++++++-- core/build.gradle | 6 +++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/bundle/build.gradle b/bundle/build.gradle index ade39655a..aa776e560 100644 --- a/bundle/build.gradle +++ b/bundle/build.gradle @@ -60,13 +60,33 @@ clean.doLast { file("export").deleteDir() } -/*publishing { +publishing { publications { bundle(MavenPublication) { + from components.java + artifact shadowJar pom { artifactId "las2peer-bundle" packaging "jar" } + + // fix pom file by removing dependencies node + pom.withXml { + Node pomNode = asNode() + pomNode.remove(pomNode.get("dependencies")) + } + } + } + + repositories { + maven { + if (las2peerRelease) url = "${project.property('dbis.archiva.url')}" + else url = "${project.property('dbis.archiva.url.snapshots')}" + + credentials { + username = System.env.ARCHIVA_USERNAME + password = System.env.ARCHIVA_PASSWORD + } } } -}*/ \ No newline at end of file +} \ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle index d6e5a09ce..a9fd05ceb 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -42,9 +42,6 @@ javadoc { destinationDir = file("$projectDir/export/javadoc") } -build.dependsOn "javadoc" -build.dependsOn "junitdoc" - task junitdoc(type: Javadoc) { doFirst {options.addStringOption("encoding", "iso-8859-1")} classpath = sourceSets.main.runtimeClasspath + sourceSets.test.runtimeClasspath @@ -52,6 +49,9 @@ task junitdoc(type: Javadoc) { destinationDir = file("$projectDir/export/junitdoc") } +build.dependsOn "javadoc" +build.dependsOn "junitdoc" + dependencies { // Use JUnit test framework. // Not just testImplementation, because JUnit asserts are used in main main/java/i5/las2peer/testing/TestSuite.java From 0c4d14d87af064613fcb5ef59f9335fabbee00d8 Mon Sep 17 00:00:00 2001 From: Philipp Dolif Date: Tue, 2 Feb 2021 13:21:28 +0100 Subject: [PATCH 43/59] Removed ivy and ant --- build.xml | 74 ----- bundle/build.xml | 181 ----------- bundle/ivy.xml | 16 - core/build.xml | 488 ---------------------------- core/ivy.xml | 36 -- ivy/ant-contrib-1.0b3.jar | Bin 224277 -> 0 bytes ivy/archiva_credentials.xml.example | 4 - ivy/ivysettings.xml | 33 -- ivy/pom_template.xml | 16 - restmapper/build.xml | 310 ------------------ restmapper/ivy.xml | 26 -- webconnector/build.xml | 382 ---------------------- webconnector/ivy.xml | 23 -- 13 files changed, 1589 deletions(-) delete mode 100644 build.xml delete mode 100644 bundle/build.xml delete mode 100644 bundle/ivy.xml delete mode 100644 core/build.xml delete mode 100644 core/ivy.xml delete mode 100644 ivy/ant-contrib-1.0b3.jar delete mode 100644 ivy/archiva_credentials.xml.example delete mode 100644 ivy/ivysettings.xml delete mode 100644 ivy/pom_template.xml delete mode 100644 restmapper/build.xml delete mode 100644 restmapper/ivy.xml delete mode 100644 webconnector/build.xml delete mode 100644 webconnector/ivy.xml diff --git a/build.xml b/build.xml deleted file mode 100644 index 5175d669d..000000000 --- a/build.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bundle/build.xml b/bundle/build.xml deleted file mode 100644 index e9d43c2b7..000000000 --- a/bundle/build.xml +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bundle/ivy.xml b/bundle/ivy.xml deleted file mode 100644 index 812ee1139..000000000 --- a/bundle/ivy.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/core/build.xml b/core/build.xml deleted file mode 100644 index 7f588a9e6..000000000 --- a/core/build.xml +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Java/JVM version: ${ant.java.version} - Java/JVM detail version: ${java.version} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/core/ivy.xml b/core/ivy.xml deleted file mode 100644 index 545ef39a6..000000000 --- a/core/ivy.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ivy/ant-contrib-1.0b3.jar b/ivy/ant-contrib-1.0b3.jar deleted file mode 100644 index 062537661a514c2ce97d18948f4f25f7226cc1a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224277 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 z 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%0DDNlc$iKGo<(eUp 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