import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'io.github.swagger2markup:swagger2markup-gradle-plugin:1.3.3' } } plugins { id 'com.github.ben-manes.versions' version '0.33.0' id 'org.springframework.boot' version '2.3.4.RELEASE' apply false id 'org.asciidoctor.convert' version '2.4.0' } repositories { mavenCentral() jcenter() google() } apply plugin: 'io.spring.dependency-management' dependencyManagement { imports { mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES } applyMavenExclusions = false } dependencyUpdates.resolutionStrategy { componentSelection { rules -> rules.all { ComponentSelection selection -> boolean rejected = ['alpha', 'beta', 'rc', 'cr', 'm', 'pr', 'b'].any { qualifier -> selection.candidate.version ==~ /(?i).*[.-]${qualifier}[.\d-]*/ } if (rejected) { selection.reject('Release candidate') } } } } apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.github.swagger2markup' task npmInstall(type: Exec) { inputs.file('package-lock.json') outputs.file('package-lock.json') if (DefaultNativePlatform.getCurrentOperatingSystem().isWindows()) { commandLine 'cmd', '/c', 'npm', 'install' } else { commandLine 'npm', 'install' } } task npmCompile(type: Exec) { inputs.files(fileTree('node_modules')) inputs.files(fileTree('src')) inputs.file('webpack.config.js') outputs.dir('src/main/resources/static') if (DefaultNativePlatform.getCurrentOperatingSystem().isWindows()) { commandLine 'cmd', '/c', 'npm', 'run', 'compile' } else { commandLine 'npm', 'run', 'compile' } } ext { swaggerOutputDir = file("${buildDir}/swagger") docsOutputDir = file("${buildDir}/docs") } test { systemProperty 'io.springfox.staticdocs.outputDir', swaggerOutputDir outputs.dir swaggerOutputDir systemProperty 'spring.profiles.active', "${springProfile}" } convertSwagger2markup { dependsOn test swaggerInput "${swaggerOutputDir}/swagger.json" outputDir swaggerOutputDir config = [ 'swagger2markup.markupLanguage': 'ASCIIDOC', 'swagger2markup.pathsGroupedBy': 'TAGS' ] } task asciidocIndex(type: Copy) { from 'src/docs' into swaggerOutputDir include '*.adoc' } asciidoctor { dependsOn convertSwagger2markup dependsOn asciidocIndex sourceDir = swaggerOutputDir sources { include 'index.adoc', 'overview.adoc', 'definitions.adoc', 'paths.adoc' } attributes = [ doctype : 'book', toc : 'left', toclevels : '3', numbered : '', sectlinks : '', sectanchors: '', hardbreaks : '', src : swaggerOutputDir, generated : docsOutputDir ] outputDir = docsOutputDir } dependencies { compile ('org.springframework.boot:spring-boot-starter-cache') compile ('org.springframework.boot:spring-boot-starter-security') compile ('org.springframework.boot:spring-boot-starter-jdbc') compile ("org.springframework.boot:spring-boot-starter-security") compile ("org.springframework.boot:spring-boot-starter-web") compile ("org.springframework.boot:spring-boot-starter-json") compile ("org.springframework.boot:spring-boot-starter-actuator") compile ('org.springframework.boot:spring-boot-devtools') runtime ("org.springframework.boot:spring-boot-properties-migrator") compile 'org.flywaydb:flyway-core:6.5.6' compile 'com.github.ben-manes.caffeine:caffeine:2.8.6' compile "javax.inject:javax.inject:1" compile 'com.google.code.findbugs:jsr305:3.0.2' compile 'javax.validation:validation-api:2.0.1.Final' compile "org.apache.commons:commons-lang3:3.11" compile "org.apache.commons:commons-collections4:4.4" compile 'org.apache.commons:commons-email:1.5' compile 'org.apache.commons:commons-text:1.9' compile "org.apache.commons:commons-imaging:1.0-alpha1" compile "commons-codec:commons-codec:1.15" compile "commons-io:commons-io:2.8.0" compile 'org.ocpsoft.prettytime:prettytime:4.0.6.Final' compile 'com.twelvemonkeys.imageio:imageio-jpeg:3.6' compile 'org.imgscalr:imgscalr-lib:4.2' compile "javax.xml.bind:jaxb-api:2.3.1" runtime 'org.glassfish.jaxb:jaxb-runtime:2.3.3' compileOnly 'io.springfox:springfox-core:2.9.2' compile 'org.apache.commons:commons-email:1.5' compile 'com.github.scribejava:scribejava-apis:7.1.1' compile 'com.github.pengrad:java-telegram-bot-api:4.9.0' compile 'org.imgscalr:imgscalr-lib:4.2' compile 'org.twitter4j:twitter4j-core:4.0.7' compile 'rocks.xmpp:xmpp-core-client:0.8.2' compile 'rocks.xmpp:xmpp-extensions-client:0.8.2' compile 'com.rometools:rome:1.15.0' compile 'com.rometools:rome-modules:1.15.0' runtime 'org.mariadb.jdbc:mariadb-java-client:2.7.0' runtime 'net.java.dev.jna:jna:5.6.0' runtime 'net.java.dev.jna:jna-platform:5.6.0' runtime 'com.h2database:h2:1.4.200' compile 'io.pebbletemplates:pebble-spring5:3.1.3' compile 'com.atlassian.commonmark:commonmark:0.15.2' compile 'com.atlassian.commonmark:commonmark-ext-autolink:0.15.2' compile 'org.tomitribe:tomitribe-http-signatures:1.7' compile 'com.google.api-client:google-api-client:1.30.11' compile "com.kotcrab.remark:remark:1.2.0" compile 'io.jsonwebtoken:jjwt-api:0.11.2' runtime 'io.jsonwebtoken:jjwt-jackson:0.11.2' runtime 'io.jsonwebtoken:jjwt-impl:0.11.2' compile 'com.nimbusds:nimbus-jose-jwt:9.0.1' testCompile("org.springframework.boot:spring-boot-starter-test") testCompile 'net.sourceforge.htmlunit:htmlunit:2.44.0', { exclude group: 'xml-apis', module:'xml-apis' } testCompile('org.springframework.security:spring-security-test') testCompile("ch.vorburger.mariaDB4j:mariaDB4j:2.4.0") testCompile 'io.springfox:springfox-swagger2:2.9.2' testCompile 'org.bouncycastle:bcpkix-jdk15on:1.66' } bootJar { launchScript() } bootRun { sourceResources sourceSets.main } npmCompile.dependsOn 'npmInstall' processResources.dependsOn 'npmCompile' sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11