🚧 Add strict filtering to preferences loader
[Sone.git] / build.gradle
1 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2
3 plugins {
4     id 'org.jetbrains.kotlin.jvm' version '1.3.70'
5     id 'org.jetbrains.kotlin.plugin.noarg' version '1.3.70'
6     id 'info.solidsoft.pitest' version '1.4.5'
7 }
8
9 group = 'net.pterodactylus'
10 version = '81'
11
12 repositories {
13      mavenCentral()
14      maven { url "https://maven.pterodactylus.net/" }
15 }
16
17 apply plugin: 'java'
18
19 sourceCompatibility = 1.8
20 targetCompatibility = 1.8
21
22 tasks.withType(JavaCompile) {
23         options.encoding = 'UTF-8'
24 }
25
26 tasks.withType(KotlinCompile) {
27     kotlinOptions {
28         jvmTarget = "1.8"
29     }
30 }
31
32 configurations {
33     provided {
34         dependencies.all { dep ->
35             configurations.default.exclude group: dep.group, module: dep.name
36         }
37     }
38     compile.extendsFrom provided
39 }
40
41 dependencies {
42     provided group: 'org.freenetproject', name: 'fred', version: '0.7.5.1475'
43     provided group: 'org.freenetproject', name: 'freenet-ext', version: '29'
44     provided group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.54'
45
46     compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8'
47     compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '1.3.0-RC'
48
49     compile group: 'net.pterodactylus', name: 'utils', version: '0.13.1'
50     compile group: 'com.google.inject', name: 'guice', version: '4.2.2'
51     compile group: 'com.google.guava', name: 'guava', version: '27.0.1-jre'
52     compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.1'
53     compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.9.1'
54     compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
55     compile group: 'org.jsoup', name: 'jsoup', version: '1.10.2'
56     compile group: 'io.dropwizard.metrics', name: 'metrics-core', version: '4.1.0'
57     compile group: 'javax.activation', name: 'javax.activation-api', version: '1.2.0'
58
59     testCompile group: 'org.jetbrains.kotlin', name: 'kotlin-test-junit'
60     testCompile group: 'junit', name: 'junit', version: '4.11'
61     testCompile group: 'org.mockito', name: 'mockito-core', version: '2.28.2'
62     testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3'
63 }
64
65 apply from: 'version.gradle'
66
67 task parallelTest(type: Test) {
68     maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
69     useJUnit {
70         excludeCategories 'net.pterodactylus.sone.test.NotParallel'
71     }
72 }
73
74 task notParallelTest(type: Test) {
75     maxParallelForks = 1
76     useJUnit {
77         includeCategories 'net.pterodactylus.sone.test.NotParallel'
78     }
79     dependsOn parallelTest
80 }
81
82 test {
83     exclude '**'
84     dependsOn parallelTest, notParallelTest
85 }
86
87 task fatJar(type: Jar) {
88     archiveFileName = project.name.toLowerCase() + '-jar-with-dependencies.jar'
89     from { (configurations.runtime - configurations.provided).collect { it.isDirectory() ? it : zipTree(it) } }
90     manifest {
91         attributes('Plugin-Main-Class': 'net.pterodactylus.sone.main.SonePlugin')
92     }
93     with jar
94 }
95
96 javadoc {
97     options {
98         quiet()
99         showFromPrivate()
100         footer('© 2010–2013 David â€˜Bombe’ Roden')
101         links('http://docs.oracle.com/javase/7/docs/api/')
102     }
103     failOnError = false
104 }
105
106 apply plugin: 'jacoco'
107
108 jacoco {
109     toolVersion = '0.8.4'
110 }
111
112 jacocoTestReport.dependsOn test
113
114 pitest {
115     pitestVersion = '1.4.10'
116     outputFormats = ['HTML', 'XML']
117     timestampedReports = false
118     timeoutFactor = 3.0
119 }
120
121 apply plugin: 'findbugs'
122
123 findbugs {
124     ignoreFailures = true
125 }
126
127 apply plugin: 'idea'
128
129 task countLinesMain(type: Exec) {
130     executable = 'cloc'
131     args = ['--by-file', '--xml', '--report-file=build/reports/cloc/main.xml', 'src/main']
132     standardOutput = new ByteArrayOutputStream()
133 }
134
135 task countLinesTest(type: Exec) {
136     executable = 'cloc'
137     args = ['--by-file', '--xml', '--report-file=build/reports/cloc/test.xml', 'src/test']
138     standardOutput = new ByteArrayOutputStream()
139 }
140
141 task countLines {
142     new File(buildDir, "reports/cloc").mkdirs()
143     dependsOn tasks.countLinesMain
144     dependsOn tasks.countLinesTest
145 }
146
147 noArg {
148     annotation('net.pterodactylus.sone.main.NoArg')
149 }