import java.nio.file.Files import java.nio.file.Paths buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath (group: 'org.sonarsource.scanner.gradle', name: 'sonarqube-gradle-plugin', version: '2.6.2') } } /** * Проверка кода в SonarQube. * Для запуска локальной проверки кода, используются следующий command line: * gradle sonarqube \ * -Dsonar.host.url=http://127.0.0.1:9000 * -Dsonar.login= * где * - - сгенерированный токен учетки "сонара" */ plugins { id "org.sonarqube" version "2.6.2" } allprojects { apply plugin: 'java' compileJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 options.encoding = 'UTF-8' } repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/groups/public/' } } } subprojects { group 'mc' ext { slf4j_version = '1.7.25' spring_version = '5.1.0.RELEASE' lombok_version = '1.18.4' junit_version = '5.3.1' } configurations { compile_excludeCopy compile.extendsFrom compile_excludeCopy } dependencies { compile (group: 'org.jetbrains', name: 'annotations', version: '16.0.3') /* Logger */ compile (group: 'org.slf4j', name: 'slf4j-api', version: slf4j_version) compile (group: 'org.slf4j', name: 'jcl-over-slf4j', version: slf4j_version) /* Spring */ compile (group: 'org.springframework', name: 'spring-context', version: spring_version) /* Lombok */ annotationProcessor (group: 'org.projectlombok', name: 'lombok', version: lombok_version) compile (group: 'org.projectlombok', name: 'lombok', version: lombok_version) testAnnotationProcessor (group: 'org.projectlombok', name: 'lombok', version: lombok_version) testCompile (group: 'org.projectlombok', name: 'lombok', version: lombok_version) /* Testing */ testImplementation (group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: junit_version) testRuntimeOnly(group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: junit_version) testImplementation(group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: junit_version) testCompile (group: 'org.slf4j', name: 'slf4j-simple', version: slf4j_version) testCompile (group: 'org.mockito', name: 'mockito-core', version: '1.10.19') testCompile (group: 'org.springframework', name: 'spring-test', version: spring_version) } test { useJUnitPlatform() } task copyDep(type: Copy) { into 'libs' from configurations.compile + configurations.runtime - configurations.compile_excludeCopy } task cleanDep(type: Delete) { delete 'libs' } /** * Сборка */ task deploy() { dependsOn { jar } doLast { def deployDir = System.getProperty("deploy") if (deployDir == null) { println "Need param -Ddeploy=path/to/deploy" throw new Exception("Need param -Ddir=path/to/deploy") } def target = Paths.get(deployDir, jar.archivePath.getName()) if (Files.notExists(target)) { println jar.archivePath Files.copy(jar.archivePath.toPath(), target) } def libsDir = System.getProperty("libs", deployDir+File.separator+"libs") if (Files.notExists(Paths.get(libsDir))) { (new File(libsDir)).mkdirs() } def libsCollection = configurations.compile + configurations.runtime - configurations.compile_excludeCopy libsCollection.each{ libFile -> target = Paths.get(libsDir, libFile.getName()) if (Files.notExists(target)) { println libFile Files.copy(libFile.toPath(), target) } } } } } /** * Запуск сервера. * Для указания рабочей папки, указываем JVM параметр * -DworkDir=path\to\workdir * Если используется отдельная папка для имплементации логгера, то указываем * -DlogImplDir=path\to\logimpldir * Если необходимо передать дополнительные JVM параметры серверу, то указываем их с двойной "D", например: * -DDspringConfig=spring.xml * -DDlog4j.configurationFile=log4j2.xml */ task runServer(type: JavaExec) { main = 'mc.core.Main' workingDir = System.getProperty("workDir", ".") subprojects.findAll().each{ prj -> classpath += prj.sourceSets.main.runtimeClasspath } if (System.getProperty("logImplDir") != null) { classpath += files(fileTree(dir: new File(System.getProperty("logImplDir")))) } else { classpath += files(fileTree(dir: new File(workingDir, "log-impl"))) } System.getProperties().stringPropertyNames().stream() .filter{propName -> propName.startsWith("D")} .forEach{propName -> jvmArgs += "-D" + propName.substring(1) + "=" + System.getProperty(propName)} ignoreExitValue = true }