diff --git a/.gitignore b/.gitignore index 78a59d6151..d7e4f7b71d 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,6 @@ rebel.xml # vagrant .vagrant - .gradle +.gradletasknamecache **/build diff --git a/build-plugins/build.gradle b/build-plugins/build.gradle index 6cae218a7d..ff7ac1ea79 100644 --- a/build-plugins/build.gradle +++ b/build-plugins/build.gradle @@ -28,12 +28,15 @@ plugins { id 'groovy' } +apply from: file( '../gradle/dependencies.gradle' ) + dependencies { implementation gradleApi() - implementation 'com.google.guava:guava:30.0-jre' implementation 'com.github.node-gradle:gradle-node-plugin:2.2.4' - implementation 'org.eclipse.jetty:jetty-server:9.4.35.v20201120' - implementation 'org.eclipse.jetty:jetty-webapp:9.4.35.v20201120' + + implementation libraries.guava + implementation libraries.jettyServer + implementation libraries.jettyWebapp } gradlePlugin { diff --git a/build.gradle b/build.gradle index 579694ecc2..6bb64a4b9d 100644 --- a/build.gradle +++ b/build.gradle @@ -26,86 +26,87 @@ plugins { id 'java-platform' } - task('serve') { dependsOn ':scm-ui:yarn_install', ':scm-webapp:serve' } +apply from: rootProject.file( 'gradle/dependencies.gradle' ) + dependencies { constraints { // lombok - api 'org.projectlombok:lombok:1.18.10' + api libraries.lombok // servlet api - api 'javax.servlet:javax.servlet-api:3.1.0' + api libraries.servletApi // logging - api 'org.slf4j:slf4j-api:1.7.30' - api 'org.slf4j:jcl-over-slf4j:1.7.30' - api 'ch.qos.logback:logback-classic:1.2.3' + api libraries.slf4jApi + api libraries.slf4jJcl + api libraries.logback // injection - api 'com.google.inject:guice:4.2.3' - api 'com.google.inject.extensions:guice-multibindings:4.2.3' - api 'com.google.inject.extensions:guice-servlet:4.2.3' - api 'com.google.inject.extensions:guice-throwingproviders:4.2.3' - api 'com.google.inject.extensions:guice-assistedinject:4.2.3' + api libraries.guice + api libraries.guiceMultibindings + api libraries.guiceServlet + api libraries.guiceThrowingproviders + api libraries.guiceAssistedinject // rest api - api 'javax.ws.rs:javax.ws.rs-api:2.1.1' - api 'org.jboss.resteasy:resteasy-core:4.5.8.Final' + api libraries.jaxRs + api libraries.resteasyCore // json - api 'com.fasterxml.jackson.core:jackson-core:2.12.0' - api 'com.fasterxml.jackson.core:jackson-annotations:2.12.0' - api 'com.fasterxml.jackson.core:jackson-databind:2.12.0' + api libraries.jacksonCore + api libraries.jacksonAnnotations + api libraries.jacksonDatabind // hypermedia - api 'de.otto.edison:edison-hal:2.1.0' + api libraries.edison // dto mapping - api 'org.mapstruct:mapstruct-jdk8:1.3.1.Final' - api 'org.mapstruct:mapstruct-processor:1.3.1.Final' + api libraries.mapstruct + api libraries.mapstructProcessor // events - api 'com.github.legman:core:1.6.2' + api libraries.legman // xml binding - api 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3' - api 'org.glassfish.jaxb:jaxb-runtime:2.3.3' + api libraries.jaxbApi + api libraries.jaxbRuntime // validation - api 'org.hibernate.validator:hibernate-validator:6.1.6.Final' - api 'javax.el:javax.el-api:3.0.0' - api 'org.glassfish:javax.el:3.0.1-b11' + api libraries.validator + api libraries.elApi + api libraries.elRuntime // utils - api 'com.google.guava:guava:30.0-jre' - api 'commons-lang:commons-lang:2.6' + api libraries.guava + api libraries.commonsLang // security - api 'org.apache.shiro:shiro-core:1.7.0' - api 'com.github.sdorra:ssp-lib:1.3.0' - api 'com.github.sdorra:ssp-processor:1.3.0' - api 'com.github.sdorra:shiro-unit:1.0.1' + api libraries.shiroCore + api libraries.ssp + api libraries.sspProcessor + api libraries.shiroUnit // tests - api 'org.junit.jupiter:junit-jupiter-api:5.7.0' - api 'org.junit.jupiter:junit-jupiter-params:5.7.0' - api 'org.junit.jupiter:junit-jupiter-engine:5.7.0' + api libraries.junitJupiterApi + api libraries.junitJupiterParams + api libraries.junitJupiterEngine // junit 4 support - api 'org.junit.vintage:junit-vintage-engine:5.7.0' - api 'junit:junit:4.13.1' + api libraries.junitVintageEngine + api libraries.junit // assertions - api 'org.hamcrest:hamcrest-core:2.1' - api 'org.hamcrest:hamcrest-library:2.1' - api 'org.assertj:assertj-core:3.18.1' + api libraries.hamcrestCore + api libraries.hamcrestLibrary + api libraries.assertj // mocking - api 'org.mockito:mockito-core:3.6.28' - api 'org.mockito:mockito-junit-jupiter:3.6.28' + api libraries.mockitoCore + api libraries.mockitoJunitJupiter } } @@ -121,6 +122,7 @@ subprojects { targetCompatibility = JavaVersion.VERSION_1_8 } + apply from: rootProject.file( 'gradle/dependencies.gradle' ) } // set build props diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle new file mode 100644 index 0000000000..63018a1a88 --- /dev/null +++ b/gradle/dependencies.gradle @@ -0,0 +1,165 @@ +ext { + slf4jVersion = '1.7.30' + guiceVersion = '4.2.3' + resteasyVersion = '4.5.8.Final' + + // TODO upgrade to 2.12.0, but this breaks openapi spec generation + jacksonVersion = '2.11.3' + + mapstructVersion = '1.3.1.Final' + jaxbVersion = '2.3.3' + shiroVersion = '1.7.0' + sspVersion = '1.3.0' + jjwtVersion = '0.11.2' + bouncycastleVersion = '1.67' + jettyVersion = '9.4.35.v20201120' + + junitJupiterVersion = '5.7.0' + hamcrestVersion = '2.1' + mockitoVersion = '3.6.28' + jerseyClientVersion = '1.19.4' + + nodeVersion = '14.15.1' + yarnVersion = '1.22.5' + + libraries = [ + // lombok + lombok: 'org.projectlombok:lombok:1.18.10', + + // servlet api + servletApi: 'javax.servlet:javax.servlet-api:3.1.0', + + // logging + slf4jApi: "org.slf4j:slf4j-api:${slf4jVersion}", + slf4jJcl: "org.slf4j:jcl-over-slf4j:${slf4jVersion}", + logback: 'ch.qos.logback:logback-classic:1.2.3', + + // injection + guice: "com.google.inject:guice:${guiceVersion}", + guiceMultibindings: "com.google.inject.extensions:guice-multibindings:${guiceVersion}", + guiceServlet: "com.google.inject.extensions:guice-servlet:${guiceVersion}", + guiceThrowingproviders: "com.google.inject.extensions:guice-throwingproviders:${guiceVersion}", + guiceAssistedinject: "com.google.inject.extensions:guice-assistedinject:${guiceVersion}", + + // rest api + jaxRs: 'javax.ws.rs:javax.ws.rs-api:2.1.1', + resteasyCore: "org.jboss.resteasy:resteasy-core:${resteasyVersion}", + resteasyJaxbProvider: "org.jboss.resteasy:resteasy-jaxb-provider:${resteasyVersion}", + resteasyJackson2Provider: "org.jboss.resteasy:resteasy-jackson2-provider:${resteasyVersion}", + resteasyMultiartProvider: "org.jboss.resteasy:resteasy-multipart-provider:${resteasyVersion}", + resteasyGuice: "org.jboss.resteasy:resteasy-guice:${resteasyVersion}", + resteasyServletInitializer: "org.jboss.resteasy:resteasy-servlet-initializer:${resteasyVersion}", + resteasyValidatorProvider: "org.jboss.resteasy:resteasy-validator-provider:${resteasyVersion}", + + // json + jacksonCore: "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}", + jacksonAnnotations: "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}", + jacksonDatabind: "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}", + jacksonJaxbAnnotations: "com.fasterxml.jackson.module:jackson-module-jaxb-annotations:${jacksonVersion}", + jacksonJaxRsBase: "com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:${jacksonVersion}", + jacksonJaxRsJsonProvider: "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:${jacksonVersion}", + jacksonDatatypeJdk8: "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:${jacksonVersion}", + jacksonDatatypeJsr310: "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:${jacksonVersion}", + + // hypermedia + edison: 'de.otto.edison:edison-hal:2.1.0', + + // openapi + swaggerJaxRs: 'io.swagger.core.v3:swagger-jaxrs2:2.1.6', + + // dto mapping + mapstruct: "org.mapstruct:mapstruct-jdk8:${mapstructVersion}", + mapstructProcessor: "org.mapstruct:mapstruct-processor:${mapstructVersion}", + + // events + legman: 'com.github.legman:core:1.6.2', + + // xml binding + jaxbApi: "jakarta.xml.bind:jakarta.xml.bind-api:${jaxbVersion}", + jaxbRuntime: "org.glassfish.jaxb:jaxb-runtime:${jaxbVersion}", + + // validation + validator: 'org.hibernate.validator:hibernate-validator:6.1.6.Final', + elApi: 'javax.el:javax.el-api:3.0.0', + elRuntime: 'org.glassfish:javax.el:3.0.1-b11', + + // utils + guava: 'com.google.guava:guava:30.0-jre', + commonsLang: 'commons-lang:commons-lang:2.6', + + // security + shiroCore: "org.apache.shiro:shiro-core:${shiroVersion}", + shiroWeb: "org.apache.shiro:shiro-web:${shiroVersion}", + shiroGuice: "org.apache.shiro:shiro-guice:${shiroVersion}", + + ssp: "com.github.sdorra:ssp-lib:${sspVersion}", + sspProcessor: "com.github.sdorra:ssp-processor:${sspVersion}", + shiroUnit: 'com.github.sdorra:shiro-unit:1.0.1', + + // jwt + jjwtApi: "io.jsonwebtoken:jjwt-api:${jjwtVersion}", + jjwtRuntime: "io.jsonwebtoken:jjwt-impl:${jjwtVersion}", + jjwtJackson: "io.jsonwebtoken:jjwt-jackson:${jjwtVersion}", + + // gpg + bouncycastlePg: "org.bouncycastle:bcpg-jdk15on:${bouncycastleVersion}", + bouncycastleProv: "org.bouncycastle:bcprov-jdk15on:${bouncycastleVersion}", + bouncycastlePkix: "org.bouncycastle:bcpkix-jdk15on:${bouncycastleVersion}", + + // service registration + metainfServices: 'org.kohsuke.metainf-services:metainf-services:1.8', + + // cron expression + cronUtils: 'com.cronutils:cron-utils:9.1.3', + + // templates + mustache: 'com.github.spullara.mustache.java:compiler:0.9.7', + + // static resources + webResources: 'com.github.sdorra:web-resources:1.1.1', + + // content type detection + spotter: 'com.github.sdorra:spotter-core:3.0.1', + tika: 'org.apache.tika:tika-core:1.25', + + // restart on unix + akuma: 'org.kohsuke:akuma:1.10', + + // native access + jna: 'net.java.dev.jna:jna:5.6.0', + + // daemonize scm-manager on unix systems + commonsDaemon: 'commons-daemon:commons-daemon:1.2.3', + jsvc: 'commons-daemon:commons-daemon-native:1.1.0@tar.gz', + + // jetty + jettyServer: "org.eclipse.jetty:jetty-server:${jettyVersion}", + jettyWebapp: "org.eclipse.jetty:jetty-webapp:${jettyVersion}", + jettyJmx: "org.eclipse.jetty:jetty-jmx:${jettyVersion}", + + // tests + junitJupiterApi: "org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}", + junitJupiterParams: "org.junit.jupiter:junit-jupiter-params:${junitJupiterVersion}", + junitJupiterEngine: "org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}", + + // junit 4 support + junitVintageEngine: "org.junit.vintage:junit-vintage-engine:${junitJupiterVersion}", + junit: 'junit:junit:4.13.1', + + // assertions + hamcrestCore: "org.hamcrest:hamcrest-core:${hamcrestVersion}", + hamcrestLibrary: "org.hamcrest:hamcrest-library:${hamcrestVersion}", + assertj: 'org.assertj:assertj-core:3.18.1', + + // mocking + mockitoCore: "org.mockito:mockito-core:${mockitoVersion}", + mockitoJunitJupiter: "org.mockito:mockito-junit-jupiter:${mockitoVersion}", + + // testing async code + awaitility: 'org.awaitility:awaitility:4.0.2', + + // rest api client for testing + jerseyClientApi: "com.sun.jersey:jersey-client:${jerseyClientVersion}", + jerseyClientRuntime: "com.sun.jersey.contribs:jersey-apache-client:${jerseyClientVersion}" + ] +} diff --git a/scm-annotation-processor/build.gradle b/scm-annotation-processor/build.gradle index 086ac2b99f..2c59284f8e 100644 --- a/scm-annotation-processor/build.gradle +++ b/scm-annotation-processor/build.gradle @@ -31,18 +31,18 @@ dependencies { implementation project(':scm-annotations') // injection - implementation 'com.google.inject:guice' + implementation libraries.guice // rest api - implementation 'javax.ws.rs:javax.ws.rs-api' + implementation libraries.jaxRs // events - implementation 'com.github.legman:core' + implementation libraries.legman // utils - implementation 'com.google.guava:guava' + implementation libraries.guava // service registration - compileOnly 'org.kohsuke.metainf-services:metainf-services:1.8' - annotationProcessor 'org.kohsuke.metainf-services:metainf-services:1.8' + compileOnly libraries.metainfServices + annotationProcessor libraries.metainfServices } diff --git a/scm-annotations/build.gradle b/scm-annotations/build.gradle index fb79fb96de..a225c721ea 100644 --- a/scm-annotations/build.gradle +++ b/scm-annotations/build.gradle @@ -27,6 +27,6 @@ plugins { } dependencies { - api platform(project(":")) - implementation 'com.google.inject:guice' + api platform(project(':')) + implementation libraries.guice } diff --git a/scm-core/build.gradle b/scm-core/build.gradle index 683af863c5..170a0f1e2a 100644 --- a/scm-core/build.gradle +++ b/scm-core/build.gradle @@ -41,80 +41,79 @@ dependencies { annotationProcessor project(':scm-annotation-processor') // lombok - compileOnly 'org.projectlombok:lombok' - // TODO version from parent - annotationProcessor 'org.projectlombok:lombok:1.18.10' + compileOnly libraries.lombok + annotationProcessor libraries.lombok // servlet api - implementation 'javax.servlet:javax.servlet-api' + implementation libraries.servletApi // logging - api 'org.slf4j:slf4j-api' - api 'org.slf4j:jcl-over-slf4j' // is api here required? - testImplementation 'ch.qos.logback:logback-classic' + api libraries.slf4jApi + api libraries.slf4jJcl // is api here required? + testImplementation libraries.logback // injection - api 'com.google.inject:guice' - api 'com.google.inject.extensions:guice-multibindings' - api 'com.google.inject.extensions:guice-servlet' - api 'com.google.inject.extensions:guice-throwingproviders' - api 'com.google.inject.extensions:guice-assistedinject' + api libraries.guice + api libraries.guiceMultibindings + api libraries.guiceServlet + api libraries.guiceThrowingproviders + api libraries.guiceAssistedinject // rest api - api 'javax.ws.rs:javax.ws.rs-api' - testImplementation 'org.jboss.resteasy:resteasy-core' + api libraries.jaxRs + testImplementation libraries.resteasyCore // json - api 'com.fasterxml.jackson.core:jackson-core' - api 'com.fasterxml.jackson.core:jackson-annotations' - api 'com.fasterxml.jackson.core:jackson-databind' + api libraries.jacksonCore + api libraries.jacksonAnnotations + api libraries.jacksonDatabind // hypermedia - api 'de.otto.edison:edison-hal' + api libraries.edison // dto mapping - api 'org.mapstruct:mapstruct-jdk8' - annotationProcessor 'org.mapstruct:mapstruct-processor' + api libraries.mapstruct + annotationProcessor libraries.mapstructProcessor // events - api 'com.github.legman:core' + api libraries.legman // xml binding - api 'jakarta.xml.bind:jakarta.xml.bind-api' - api 'org.glassfish.jaxb:jaxb-runtime' // api ? + api libraries.jaxbApi + api libraries.jaxbRuntime // should this be an part of api configuration? // validation - api 'org.hibernate.validator:hibernate-validator' - testImplementation 'javax.el:javax.el-api' - testImplementation 'org.glassfish:javax.el' + api libraries.validator + testImplementation libraries.elApi + testImplementation libraries.elRuntime // utils - api 'com.google.guava:guava' - api 'commons-lang:commons-lang' + api libraries.guava + api libraries.commonsLang // security - api 'org.apache.shiro:shiro-core' - api 'com.github.sdorra:ssp-lib' - annotationProcessor 'com.github.sdorra:ssp-processor' - testImplementation 'com.github.sdorra:shiro-unit' + api libraries.shiroCore + api libraries.ssp + annotationProcessor libraries.sspProcessor + testImplementation libraries.shiroUnit // tests - testImplementation 'org.junit.jupiter:junit-jupiter-api' - testImplementation 'org.junit.jupiter:junit-jupiter-params' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + testImplementation libraries.junitJupiterApi + testImplementation libraries.junitJupiterParams + testRuntimeOnly libraries.junitJupiterEngine // junit 4 support - testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' - testImplementation 'junit:junit' + testRuntimeOnly libraries.junitVintageEngine + testImplementation libraries.junit // assertions - testImplementation 'org.hamcrest:hamcrest-core' - testImplementation 'org.hamcrest:hamcrest-library' - testImplementation 'org.assertj:assertj-core' + testImplementation libraries.hamcrestCore + testImplementation libraries.hamcrestLibrary + testImplementation libraries.assertj // mocking - testImplementation 'org.mockito:mockito-core' - testImplementation 'org.mockito:mockito-junit-jupiter' + testImplementation libraries.mockitoCore + testImplementation libraries.mockitoJunitJupiter } jar { diff --git a/scm-dao-xml/build.gradle b/scm-dao-xml/build.gradle index 41378b59bc..4c7c71f059 100644 --- a/scm-dao-xml/build.gradle +++ b/scm-dao-xml/build.gradle @@ -33,9 +33,8 @@ dependencies { testImplementation project(':scm-test') // lombok - compileOnly 'org.projectlombok:lombok' - // TODO version from parent - annotationProcessor 'org.projectlombok:lombok:1.18.10' + compileOnly libraries.lombok + annotationProcessor libraries.lombok } test { diff --git a/scm-packaging/unix/build.gradle b/scm-packaging/unix/build.gradle index 661dc2a39e..29a5db20fc 100644 --- a/scm-packaging/unix/build.gradle +++ b/scm-packaging/unix/build.gradle @@ -32,7 +32,7 @@ configurations { dependencies { server project(':scm-server') webapp project(path: ':scm-webapp', configuration: 'webapp') - jsvc 'commons-daemon:commons-daemon-native:1.1.0@tar.gz' + jsvc libraries.jsvc } task distribution(type: Tar) { diff --git a/scm-packaging/windows/build.gradle b/scm-packaging/windows/build.gradle index 28529f676d..ca33253d8d 100644 --- a/scm-packaging/windows/build.gradle +++ b/scm-packaging/windows/build.gradle @@ -24,7 +24,7 @@ import org.gradle.util.VersionNumber plugins { - id "de.undercouch.download" version "4.1.1" + id "de.undercouch.download" version "4.1.1" } configurations { diff --git a/scm-plugins/scm-git-plugin/build.gradle b/scm-plugins/scm-git-plugin/build.gradle index 7e9e1f948f..586656aa6c 100644 --- a/scm-plugins/scm-git-plugin/build.gradle +++ b/scm-plugins/scm-git-plugin/build.gradle @@ -27,13 +27,15 @@ plugins { id 'org.scm-manager.smp' version '0.5.1' } +def jgitVersion = '5.6.1.202002131546-r-scm1' + dependencies { // required by scm-it - api 'sonia.jgit:org.eclipse.jgit:5.6.1.202002131546-r-scm1' - implementation 'sonia.jgit:org.eclipse.jgit.http.server:5.6.1.202002131546-r-scm1' - implementation 'sonia.jgit:org.eclipse.jgit.lfs.server:5.6.1.202002131546-r-scm1' + api "sonia.jgit:org.eclipse.jgit:${jgitVersion}" + implementation "sonia.jgit:org.eclipse.jgit.http.server:${jgitVersion}" + implementation "sonia.jgit:org.eclipse.jgit.lfs.server:${jgitVersion}" - testImplementation 'com.github.sdorra:shiro-unit' + testImplementation libraries.shiroUnit } scmPlugin { diff --git a/scm-plugins/scm-hg-plugin/build.gradle b/scm-plugins/scm-hg-plugin/build.gradle index 4dbeac1dea..8043d8c113 100644 --- a/scm-plugins/scm-hg-plugin/build.gradle +++ b/scm-plugins/scm-hg-plugin/build.gradle @@ -32,8 +32,8 @@ dependencies { exclude group: 'com.google.guava', module: 'guava' exclude group: 'org.slf4j' } - testImplementation 'com.github.sdorra:shiro-unit' - testImplementation 'ch.qos.logback:logback-classic' + testImplementation libraries.shiroUnit + testImplementation libraries.logback } scmPlugin { diff --git a/scm-plugins/scm-svn-plugin/build.gradle b/scm-plugins/scm-svn-plugin/build.gradle index dd962fd690..3d17bd1db1 100644 --- a/scm-plugins/scm-svn-plugin/build.gradle +++ b/scm-plugins/scm-svn-plugin/build.gradle @@ -27,12 +27,14 @@ plugins { id 'org.scm-manager.smp' version '0.5.1' } +def svnkitVersion = '1.10.1-scm2' + dependencies { - implementation('sonia.svnkit:svnkit:1.10.1-scm2') { + implementation("sonia.svnkit:svnkit:${svnkitVersion}") { exclude group: 'org.tmatesoft.svnkit', module: 'trilead-ssh2' } - implementation 'sonia.svnkit:svnkit-dav:1.10.1-scm2' - testImplementation 'com.github.sdorra:shiro-unit' + implementation "sonia.svnkit:svnkit-dav:${svnkitVersion}" + testImplementation libraries.shiroUnit } scmPlugin { diff --git a/scm-server/build.gradle b/scm-server/build.gradle index 445df36249..acdd209bff 100644 --- a/scm-server/build.gradle +++ b/scm-server/build.gradle @@ -29,9 +29,9 @@ plugins { dependencies { api platform(project(':')) - implementation 'commons-daemon:commons-daemon:1.2.3' - implementation 'org.eclipse.jetty:jetty-server:9.4.35.v20201120' - implementation 'org.eclipse.jetty:jetty-webapp:9.4.35.v20201120' + implementation libraries.commonsDaemon + implementation libraries.jettyServer + implementation libraries.jettyWebapp // TODO do we need jetty jmx? - implementation 'org.eclipse.jetty:jetty-jmx:9.4.35.v20201120' + implementation libraries.jettyJmx } diff --git a/scm-test/build.gradle b/scm-test/build.gradle index ecb0f441b9..dde34c05b9 100644 --- a/scm-test/build.gradle +++ b/scm-test/build.gradle @@ -31,26 +31,26 @@ dependencies { api project(':scm-core') // tests - api 'org.junit.jupiter:junit-jupiter-api' - api 'org.junit.jupiter:junit-jupiter-params' - api 'org.junit.jupiter:junit-jupiter-engine' + api libraries.junitJupiterApi + api libraries.junitJupiterParams + api libraries.junitJupiterEngine // junit 4 support - api 'org.junit.vintage:junit-vintage-engine' - api 'junit:junit' + api libraries.junitVintageEngine + api libraries.junit // assertions - api 'org.hamcrest:hamcrest-core' - api 'org.hamcrest:hamcrest-library' - api 'org.assertj:assertj-core' + api libraries.hamcrestCore + api libraries.hamcrestLibrary + api libraries.assertj // mocking - api 'org.mockito:mockito-core' - api 'org.mockito:mockito-junit-jupiter' + api libraries.mockitoCore + api libraries.mockitoJunitJupiter // test rest api's - api 'org.jboss.resteasy:resteasy-core' + api libraries.resteasyCore // test servlet api - api 'javax.servlet:javax.servlet-api' + api libraries.servletApi } diff --git a/scm-ui/build.gradle b/scm-ui/build.gradle index 2534a13828..b8f6b80607 100644 --- a/scm-ui/build.gradle +++ b/scm-ui/build.gradle @@ -27,10 +27,10 @@ plugins { } node { - download = true - version = '14.15.1' - yarnVersion = '1.22.5' - nodeModulesDir = file(project.rootProject.projectDir) + download = true + version = nodeVersion + yarnVersion = yarnVersion + nodeModulesDir = file(project.rootProject.projectDir) } // TODO define inputs and outputs @@ -45,7 +45,7 @@ task typecheck(type: YarnTask) { include 'ui-*/**/*.tsx' }) .withPathSensitivity(PathSensitivity.RELATIVE) - outputs.file("build/tmp/typecheck/marker") + outputs.file('build/tmp/typecheck/marker') dependsOn('yarn_install') doLast { File directory = new File(project.buildDir, 'tmp/typecheck') diff --git a/scm-webapp/build.gradle b/scm-webapp/build.gradle index 007802c498..6af6df65b0 100644 --- a/scm-webapp/build.gradle +++ b/scm-webapp/build.gradle @@ -50,98 +50,83 @@ dependencies { testImplementation project(':scm-test') annotationProcessor project(':scm-annotation-processor') - // servlet api TODO version - providedCompile 'javax.servlet:javax.servlet-api:3.0.1' - testImplementation 'javax.servlet:javax.servlet-api' + // servlet api + providedCompile libraries.servletApi + testImplementation libraries.servletApi // security - implementation 'org.apache.shiro:shiro-web:1.7.0' // TODO - implementation 'org.apache.shiro:shiro-guice:1.7.0' // TODO + implementation libraries.shiroWeb + implementation libraries.shiroGuice // jwt - implementation 'io.jsonwebtoken:jjwt-api:0.11.2' - implementation 'io.jsonwebtoken:jjwt-impl:0.11.2' - implementation 'io.jsonwebtoken:jjwt-jackson:0.11.2' + implementation libraries.jjwtApi + implementation libraries.jjwtRuntime + implementation libraries.jjwtJackson // gpg - implementation 'org.bouncycastle:bcpg-jdk15on:1.67' - implementation 'org.bouncycastle:bcprov-jdk15on:1.67' - implementation 'org.bouncycastle:bcpkix-jdk15on:1.67' + implementation libraries.bouncycastlePg + implementation libraries.bouncycastleProv + implementation libraries.bouncycastlePkix - // json TODO versions - implementation 'com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.11.3' - implementation 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.11.3' - implementation 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.11.3' - implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.3' - implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.3' + // json + implementation libraries.jacksonJaxbAnnotations + implementation libraries.jacksonJaxRsBase + implementation libraries.jacksonJaxRsJsonProvider + implementation libraries.jacksonDatatypeJdk8 + implementation libraries.jacksonDatatypeJsr310 - // rest api TODO versions - implementation 'org.jboss.resteasy:resteasy-jaxb-provider:4.5.8.Final' - implementation 'org.jboss.resteasy:resteasy-jackson2-provider:4.5.8.Final' - implementation 'org.jboss.resteasy:resteasy-multipart-provider:4.5.8.Final' - implementation 'org.jboss.resteasy:resteasy-guice:4.5.8.Final' - implementation 'org.jboss.resteasy:resteasy-servlet-initializer:4.5.8.Final' - implementation 'org.jboss.resteasy:resteasy-validator-provider:4.5.8.Final' + // rest api + implementation libraries.resteasyJaxbProvider + implementation libraries.resteasyJackson2Provider + implementation libraries.resteasyMultiartProvider + implementation libraries.resteasyGuice + implementation libraries.resteasyServletInitializer + implementation libraries.resteasyValidatorProvider // openapi - compileOnly 'io.swagger.core.v3:swagger-jaxrs2:2.1.6' - - // validation - implementation 'org.hibernate.validator:hibernate-validator:6.1.6.Final' - implementation 'javax.el:javax.el-api:3.0.0' - implementation 'org.glassfish:javax.el:3.0.1-b11' + compileOnly libraries.swaggerJaxRs // logging - implementation 'ch.qos.logback:logback-classic' - // api 'org.slf4j:jcl-over-slf4j' from core, but why? - implementation 'org.slf4j:log4j-over-slf4j:1.7.30' - - // utils - implementation 'com.google.guava:guava' + implementation libraries.logback // cron expression - implementation 'com.cronutils:cron-utils:9.1.3' + implementation libraries.cronUtils // templates - implementation 'com.github.spullara.mustache.java:compiler:0.9.7' + implementation libraries.mustache // static resources - implementation 'com.github.sdorra:web-resources:1.1.1' + implementation libraries.webResources // content type detection - implementation 'com.github.sdorra:spotter-core:3.0.1' - implementation 'org.apache.tika:tika-core:1.25' + implementation libraries.spotter + implementation libraries.tika // restart on unix - implementation 'org.kohsuke:akuma:1.10' + implementation libraries.akuma // native access - implementation 'net.java.dev.jna:jna:5.6.0' + implementation libraries.jna // lombok - compileOnly 'org.projectlombok:lombok' - testCompileOnly 'org.projectlombok:lombok' - // TODO version from parent - annotationProcessor 'org.projectlombok:lombok:1.18.10' - testAnnotationProcessor 'org.projectlombok:lombok:1.18.10' + compileOnly libraries.lombok + testCompileOnly libraries.lombok + annotationProcessor libraries.lombok + testAnnotationProcessor libraries.lombok // dto mapping - annotationProcessor 'org.mapstruct:mapstruct-processor' + annotationProcessor libraries.mapstructProcessor - // selenium TODO do we need this? - // testImplementation 'org.seleniumhq.selenium:selenium-java:2.53.1' - // testImplementation 'org.seleniumhq.selenium:selenium-firefox-driver:2.53.1' - // testImplementation 'org.seleniumhq.selenium:htmlunit-driver:2.21' - - // rest api client TODO do we need this? - testImplementation 'com.sun.jersey:jersey-client:1.19.4' - testImplementation 'com.sun.jersey.contribs:jersey-apache-client:1.19.4' - - // async - testImplementation 'org.awaitility:awaitility:4.0.2' + // testing async code + testImplementation libraries.awaitility // shiro unit - testImplementation 'com.github.sdorra:shiro-unit:1.0.1' + testImplementation libraries.shiroUnit + + // rest api client + // TODO do we need this? + testImplementation libraries.jerseyClientApi + testImplementation libraries.jerseyClientRuntime } war {