update changelog
[debian/jabref.git] / build.gradle
1 apply plugin: "java"
2 apply plugin: "eclipse"
3 apply plugin: "idea"
4 apply plugin: "application"
5 apply plugin: 'project-report'
6
7
8 // enables fatjar, the creation of a jar with all dependencies bundled inside
9 buildscript {
10     repositories {
11         jcenter()
12     }
13     dependencies {
14         classpath 'eu.appsatori:gradle-fatjar-plugin:0.2'
15     }
16 }
17 apply plugin: 'fatjar'
18 fatJar {
19     classifier 'fat'
20     manifest {
21         attributes 'Main-Class': "net.sf.jabref.JabRefMain"
22     }
23 }
24
25 test {
26     testLogging {
27         exceptionFormat "full" // default is "short"
28     }
29 }
30
31 version = "2.11b3"
32
33 repositories {
34     jcenter()
35 }
36
37 sourceSets {
38     main {
39         java {
40             srcDirs = ["src/main/java", "src/main/gen"]
41         }
42     }
43 }
44
45 configurations {
46     generateClasspath
47     antlr3
48     antlr2
49 }
50
51 dependencies {
52
53     // jgoodies
54     compile 'com.jgoodies:jgoodies-common:1.4.0'
55     compile 'com.jgoodies:jgoodies-forms:1.6.0'
56     compile 'com.jgoodies:jgoodies-looks:2.5.2'
57     compile fileTree(dir: 'lib/jgoodies/', includes: ['*.jar']) // instead of having the source code inside
58
59     compile 'org.apache.pdfbox:pdfbox:1.7.1'
60     compile 'org.apache.pdfbox:fontbox:1.7.1'
61     compile 'org.apache.pdfbox:jempbox:1.7.1'
62
63     compile 'commons-cli:commons-cli:1.3.1'
64
65     compile 'org.openoffice:juh:3.2.1'
66     compile 'org.openoffice:jurt:3.2.1'
67     compile 'org.openoffice:ridl:3.2.1'
68     compile 'org.openoffice:unoil:3.2.1'
69
70     antlr2 'antlr:antlr:2.7.7'
71     antlr3 'org.antlr:antlr:3.4'
72     compile 'org.antlr:antlr-runtime:3.4'
73
74     compile 'mysql:mysql-connector-java:5.0.7'
75     compile 'org.postgresql:postgresql:9.2-1002-jdbc4'
76
77     compile 'net.java.dev.glazedlists:glazedlists_java15:1.8.0'
78     compile fileTree(dir: 'lib', includes: ['microba.jar', 'spin.jar'])
79
80     compile 'net.java.dev.jna:jna:4.1.0'
81
82     compile 'commons-logging:commons-logging:1.0.2'
83     // not available in maven repository
84     compile fileTree(dir: 'lib/plugin', includes: ['jpf.jar', 'jpf-boot.jar', 'JPFCodeGenerator-rt.jar'])
85
86     compile 'com.sun.jersey:jersey-client:1.14'
87     compile 'com.sun.jersey:jersey-core:1.14'
88     compile 'com.sun.jersey.contribs:jersey-multipart:1.14'
89
90     compile fileTree(dir: 'lib/spl/sciplore', includes: ['*.jar'])
91
92     compile 'junit:junit:4.12'
93
94     generateClasspath fileTree(dir: 'lib/plugin', includes: ['jpf.jar', 'jpf-boot.jar', 'JPFCodeGenerator.jar', 'velocity-dep-1.5.jar'])
95 }
96
97 // use ant targets with prefix antTargets.XXXXX
98 ant.importBuild "build-wrapper.xml"
99 // add jars from this classpath to the classpath for the ant build
100 if (org.gradle.internal.os.OperatingSystem.current().windows) {
101     // according to the discussion at https://github.com/JabRef/jabref/pull/58, the separators are different on Windows and Linux
102     ant.references.jars.setFiles(configurations.compile.asPath.replace(";"," "))
103 } else {
104     ant.references.jars.setFiles(configurations.compile.asPath.replace(":"," "))
105 }
106
107 sourceCompatibility = 1.6
108 mainClassName = "net.sf.jabref.JabRefMain"
109
110 task wrapper(type: Wrapper) {
111     gradleVersion = '2.4'
112 }
113
114 compileJava {
115     // files are all encoded using UTF-8
116     options.encoding = 'UTF-8'
117     options.compilerArgs << "-Xlint:unchecked"
118 }
119
120 compileTestJava {
121     // files are all encoded using UTF-8
122     options.encoding = 'UTF-8'
123 }
124
125 javadoc {
126     options {
127         // files are all encoded using UTF-8
128         encoding = 'UTF-8'
129         version = true
130         author = true
131     }
132 }
133
134 // jabref specific tasks
135 compileJava.dependsOn "generateSource"
136
137 task generateSource(dependsOn: ["generatePluginSource", "generateBstGrammarSource", "generateSearchTreeParserSource"]) {
138     group = 'JabRef'
139     description 'Generates all Java source files.'
140 }
141
142 task generatePluginSource(type: JavaExec) {
143     group 'JabRef'
144     description 'Generates _JabRefPlugin.java with JPF.'
145
146     ext.pluginsDir = "src/main/resources/plugins"
147
148     inputs.dir file(ext.pluginsDir)
149     outputs.file file("src/main/gen/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java")
150
151     main = "net.sf.jabref.plugin.util.CodeGenerator"
152     args = [ext.pluginsDir]
153     classpath = configurations.generateClasspath
154 }
155
156 task generateBstGrammarSource(type: JavaExec) {
157     group 'JabRef'
158     description 'Generates BstLexer.java and BstParser.java from the Bst.g grammar file using antlr3.'
159
160     File antlrSource = file('src/main/antlr3/net/sf/jabref/bst/Bst.g')
161
162     inputs.file antlrSource
163     outputs.file file('src/main/gen/net/sf/jabref/bst/BstLexer.java')
164     outputs.file file('src/main/gen/net/sf/jabref/bst/BstParser.java')
165
166     main = 'org.antlr.Tool'
167     classpath = configurations.antlr3
168     args = ["-o", file('src/main/gen/net/sf/jabref/bst/'), antlrSource]
169 }
170
171 task generateSearchLexerSource(type: JavaExec) {
172     String grammarFile = "Lexer"
173
174     group 'JabRef'
175     description "Generates java files for ${grammarFile}.g antlr2."
176
177     String packagePath = "net/sf/jabref/search"
178     File antlr2Path = file("src/main/antlr2")
179     File genPath = file("src/main/gen")
180
181     File antlrSource = file("$antlr2Path/$packagePath/${grammarFile}.g")
182     File destinationDir = file("$genPath/$packagePath")
183
184     inputs.file antlrSource
185     outputs.file file("$destinationDir/SearchExpression${grammarFile}.java")
186     outputs.file file("$destinationDir/SearchExpression${grammarFile}.smap")
187     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.java")
188     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.txt")
189
190     main = 'antlr.Tool'
191     classpath = configurations.antlr2
192     args = ["-o", destinationDir, antlrSource]
193 }
194
195 task generateSearchParserSource(type: JavaExec, dependsOn: "generateSearchLexerSource") {
196     String grammarFile = "Parser"
197
198     group 'JabRef'
199     description "Generates java files for ${grammarFile}.g antlr2."
200
201     String packagePath = "net/sf/jabref/search"
202     File antlr2Path = file("src/main/antlr2")
203     File genPath = file("src/main/gen")
204
205     File antlrSource = file("$antlr2Path/$packagePath/${grammarFile}.g")
206     File destinationDir = file("$genPath/$packagePath")
207
208     inputs.file antlrSource
209     outputs.file file("$destinationDir/SearchExpression${grammarFile}.java")
210     outputs.file file("$destinationDir/SearchExpression${grammarFile}.smap")
211     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.java")
212     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.txt")
213
214     main = 'antlr.Tool'
215     classpath = configurations.antlr2
216     args = ["-o", destinationDir, antlrSource]
217 }
218
219 task generateSearchTreeParserSource(type: JavaExec, dependsOn: "generateSearchParserSource") {
220     String grammarFile = "TreeParser"
221
222     group 'JabRef'
223     description "Generates java files for ${grammarFile}.g antlr2."
224
225     String packagePath = "net/sf/jabref/search"
226     File antlr2Path = file("src/main/antlr2")
227     File genPath = file("src/main/gen")
228
229     File antlrSource = file("$antlr2Path/$packagePath/${grammarFile}.g")
230     File destinationDir = file("$genPath/$packagePath")
231
232     inputs.file antlrSource
233     outputs.file file("$destinationDir/SearchExpression${grammarFile}.java")
234     outputs.file file("$destinationDir/SearchExpression${grammarFile}.smap")
235     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.java")
236     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.txt")
237
238     main = 'antlr.Tool'
239     classpath = configurations.antlr2
240     args = ["-o", destinationDir, antlrSource]
241 }
242
243 // git support in intellij idea
244 idea.project.ipr {
245     withXml { provider ->
246         provider.node.component.find { it.@name == 'VcsDirectoryMappings' }.mapping.@vcs = 'Git'
247     }
248 }
249
250 apply plugin: 'jacoco'
251 apply plugin: 'com.github.kt3k.coveralls'
252
253 buildscript {
254     repositories {
255         jcenter()
256     }
257
258     dependencies {
259         classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1'
260     }
261 }
262
263 jacocoTestReport {
264     reports {
265         xml.enabled = true // coveralls plugin depends on xml format report
266         html.enabled = true
267     }
268 }