♻️ Add first stab at async freenet interface
[Sone.git] / build.gradle
1 group = 'net.pterodactylus'
2 version = '80'
3
4 buildscript {
5     ext.kotlinVersion = '1.3.41'
6     repositories {
7         mavenCentral()
8     }
9     dependencies {
10         classpath group: 'info.solidsoft.gradle.pitest', name: 'gradle-pitest-plugin', version: '1.4.0'
11         classpath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: kotlinVersion
12         classpath group: 'org.jetbrains.kotlin', name: 'kotlin-noarg', version: kotlinVersion
13     }
14 }
15
16 repositories {
17      mavenCentral()
18      maven { url "https://maven.pterodactylus.net/" }
19 }
20
21 apply plugin: 'java'
22
23 sourceCompatibility = 1.8
24 targetCompatibility = 1.8
25
26 tasks.withType(JavaCompile) {
27         options.encoding = 'UTF-8'
28 }
29
30 apply plugin: 'kotlin'
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.12.4'
50     compile group: 'com.google.inject', name: 'guice', version: '4.2.2'
51     compile group: 'com.google.guava', name: 'guava', version: '27.0.1-android'
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
58     testCompile group: 'org.jetbrains.kotlin', name: 'kotlin-test-junit'
59     testCompile group: 'junit', name: 'junit', version: '4.11'
60     testCompile group: 'org.mockito', name: 'mockito-core', version: '2.10.0'
61     testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3'
62 }
63
64 apply from: 'version.gradle'
65
66 test {
67     maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
68 }
69
70 task fatJar(type: Jar) {
71     archiveName = project.name.toLowerCase() + '-jar-with-dependencies.jar'
72     from { (configurations.runtime - configurations.provided).collect { it.isDirectory() ? it : zipTree(it) } }
73     manifest {
74         attributes('Plugin-Main-Class': 'net.pterodactylus.sone.main.SonePlugin')
75     }
76     with jar
77 }
78
79 javadoc {
80     options {
81         quiet()
82         showFromPrivate()
83         footer('© 2010–2013 David ‘Bombe’ Roden')
84         links('http://docs.oracle.com/javase/7/docs/api/')
85     }
86     failOnError = false
87 }
88
89 apply plugin: 'jacoco'
90
91 jacoco {
92     toolVersion = '0.7.9'
93 }
94
95 jacocoTestReport.dependsOn test
96
97 apply plugin: 'info.solidsoft.pitest'
98
99 pitest {
100     outputFormats = ['HTML', 'XML']
101     timestampedReports = false
102     timeoutFactor = 3.0
103 }
104
105 apply plugin: 'findbugs'
106
107 findbugs {
108     ignoreFailures = true
109 }
110
111 apply plugin: 'idea'
112
113 task countLinesMain(type: Exec) {
114     executable = 'cloc'
115     args = ['--by-file', '--xml', '--report-file=build/reports/cloc/main.xml', 'src/main']
116     standardOutput = new ByteArrayOutputStream()
117 }
118
119 task countLinesTest(type: Exec) {
120     executable = 'cloc'
121     args = ['--by-file', '--xml', '--report-file=build/reports/cloc/test.xml', 'src/test']
122     standardOutput = new ByteArrayOutputStream()
123 }
124
125 task countLines {
126     new File(buildDir, "reports/cloc").mkdirs()
127     dependsOn tasks.countLinesMain
128     dependsOn tasks.countLinesTest
129 }
130
131 apply plugin: 'kotlin-noarg'
132
133 noArg {
134     annotation('net.pterodactylus.sone.main.NoArg')
135 }