From f749a71aeaf2429df05561be97c87b180484aec5 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Fri, 18 Dec 2020 14:14:07 +0100 Subject: [PATCH] Migrate module scm-core --- build.gradle | 69 +++++++++++++++ scm-annotation-processor/build.gradle | 9 ++ scm-core/build.gradle | 120 ++++++++++++++++++++++++++ settings.gradle | 1 + 4 files changed, 199 insertions(+) create mode 100644 scm-core/build.gradle diff --git a/build.gradle b/build.gradle index 0a40e014f7..2c63dd2e3a 100644 --- a/build.gradle +++ b/build.gradle @@ -28,10 +28,79 @@ plugins { dependencies { constraints { + // lombok + api 'org.projectlombok:lombok:1.18.10' + + // servlet api + api 'javax.servlet:javax.servlet-api:3.1.0' + + // 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' + + // 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' + + // rest api api 'javax.ws.rs:javax.ws.rs-api:2.1.1' + api 'org.jboss.resteasy:resteasy-core:4.5.8.Final' + + // json + api 'com.fasterxml.jackson.core:jackson-core:2.11.3' + api 'com.fasterxml.jackson.core:jackson-annotations:2.11.3' + api 'com.fasterxml.jackson.core:jackson-databind:2.11.3' + + // hypermedia + api 'de.otto.edison:edison-hal:2.1.0' + + // dto mapping + api 'org.mapstruct:mapstruct-jdk8:1.3.1.Final' + api 'org.mapstruct:mapstruct-processor:1.3.1.Final' + + // events api 'com.github.legman:core:1.6.2' + + // xml binding + api 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3' + api 'org.glassfish.jaxb:jaxb-runtime:2.3.3' + + // 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' + + // utils api 'com.google.guava:guava:30.0-jre' + api 'commons-lang:commons-lang:2.6' + + // 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' + + // 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' + + // junit 4 support + api 'org.junit.vintage:junit-vintage-engine:5.7.0' + api 'junit:junit:4.13.1' + + // assertions + api 'org.hamcrest:hamcrest-core:2.1' + api 'org.hamcrest:hamcrest-library:2.1' + api 'org.assertj:assertj-core:3.18.1' + + // mocking + api 'org.mockito:mockito-core:3.6.28' + api 'org.mockito:mockito-junit-jupiter:3.6.28' } } diff --git a/scm-annotation-processor/build.gradle b/scm-annotation-processor/build.gradle index 81a0c824ac..086ac2b99f 100644 --- a/scm-annotation-processor/build.gradle +++ b/scm-annotation-processor/build.gradle @@ -29,11 +29,20 @@ plugins { dependencies { implementation platform(project(':')) implementation project(':scm-annotations') + + // injection implementation 'com.google.inject:guice' + + // rest api implementation 'javax.ws.rs:javax.ws.rs-api' + + // events implementation 'com.github.legman:core' + + // utils implementation 'com.google.guava:guava' + // service registration compileOnly 'org.kohsuke.metainf-services:metainf-services:1.8' annotationProcessor 'org.kohsuke.metainf-services:metainf-services:1.8' } diff --git a/scm-core/build.gradle b/scm-core/build.gradle new file mode 100644 index 0000000000..3b5af7e978 --- /dev/null +++ b/scm-core/build.gradle @@ -0,0 +1,120 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +plugins { + id 'java-library' +} + +// TODO +// gradle has xerces on it classpath, which breaks our annotation processor +// so we force jdk build in for now +// @see https://stackoverflow.com/questions/53299280/java-and-xerces-cant-find-property-xmlconstants-access-external-dtd +System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); + +dependencies { + api platform(project(':')) + + // scm annotations + api project(':scm-annotations') + annotationProcessor project(':scm-annotation-processor') + + // lombok + compileOnly 'org.projectlombok:lombok' + annotationProcessor 'org.projectlombok:lombok' + + // servlet api + implementation 'javax.servlet:javax.servlet-api' + + // logging + api 'org.slf4j:slf4j-api' + api 'org.slf4j:jcl-over-slf4j' // is api here required? + testImplementation 'ch.qos.logback:logback-classic' + + // 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' + + // rest api + api 'javax.ws.rs:javax.ws.rs-api' + testImplementation 'org.jboss.resteasy:resteasy-core' + + // json + api 'com.fasterxml.jackson.core:jackson-core' + api 'com.fasterxml.jackson.core:jackson-annotations' + api 'com.fasterxml.jackson.core:jackson-databind' + + // hypermedia + api 'de.otto.edison:edison-hal' + + // dto mapping + api 'org.mapstruct:mapstruct-jdk8' + annotationProcessor 'org.mapstruct:mapstruct-processor' + + // events + api 'com.github.legman:core' + + // xml binding + api 'jakarta.xml.bind:jakarta.xml.bind-api' + api 'org.glassfish.jaxb:jaxb-runtime' // api ? + + // validation + api 'org.hibernate.validator:hibernate-validator' + testImplementation 'javax.el:javax.el-api' + testImplementation 'org.glassfish:javax.el' + + // utils + api 'com.google.guava:guava' + api 'commons-lang:commons-lang' + + // 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' + + // tests + testImplementation 'org.junit.jupiter:junit-jupiter-api' + testImplementation 'org.junit.jupiter:junit-jupiter-params' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' + + // junit 4 support + testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' + testImplementation 'junit:junit' + + // assertions + testImplementation 'org.hamcrest:hamcrest-core' + testImplementation 'org.hamcrest:hamcrest-library' + testImplementation 'org.assertj:assertj-core' + + // mocking + testImplementation 'org.mockito:mockito-core' + testImplementation 'org.mockito:mockito-junit-jupiter' +} + +test { + useJUnitPlatform() +} diff --git a/settings.gradle b/settings.gradle index 702ab8041e..6bd0d1a2e2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -26,3 +26,4 @@ rootProject.name = 'scm' include('scm-annotations') include('scm-annotation-processor') +include('scm-core')