Imported Upstream version 2.11~beta2+ds
[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         mavenCentral()
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.11b2"
32
33 repositories {
34     mavenCentral()
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     // option parser
64     compile fileTree(dir: 'lib/ritopt/', includes: ['*.jar']) // instead of having the source code inside
65
66     compile 'org.openoffice:juh:3.2.1'
67     compile 'org.openoffice:jurt:3.2.1'
68     compile 'org.openoffice:ridl:3.2.1'
69     compile 'org.openoffice:unoil:3.2.1'
70
71     antlr2 'antlr:antlr:2.7.7'
72     antlr3 'org.antlr:antlr:3.4'
73     compile 'org.antlr:antlr-runtime:3.4'
74
75     compile 'mysql:mysql-connector-java:5.0.7'
76     compile 'org.postgresql:postgresql:9.2-1002-jdbc4'
77
78     compile fileTree(dir: 'lib', includes: ['glazedlists-1.8.0_java15.jar', 'jayatana-1.2.4.jar', 'microba.jar', 'spin.jar'])
79
80     compile 'net.java.dev.jna:jna:4.1.0'
81
82     // not available in maven repository
83     compile fileTree(dir: 'lib/plugin', includes: ['jpf.jar', 'jpf-boot.jar', 'commons-logging.jar', 'JPFCodeGenerator-rt.jar'])
84
85     compile fileTree(dir: 'lib/spl/jersey', includes: ['*.jar'])
86     compile fileTree(dir: 'lib/spl/sciplore', includes: ['*.jar'])
87
88     compile 'junit:junit:4.11'
89
90     generateClasspath fileTree(dir: 'lib/plugin', includes: ['jpf.jar', 'jpf-boot.jar', 'JPFCodeGenerator.jar', 'velocity-dep-1.5.jar'])
91 }
92
93 // use ant targets with prefix antTargets.XXXXX
94 ant.importBuild "build-wrapper.xml"
95
96 sourceCompatibility = 1.6
97 mainClassName = "net.sf.jabref.JabRefMain"
98
99 task wrapper(type: Wrapper) {
100     gradleVersion = '2.1'
101 }
102
103 compileJava {
104     // files are all encoded using UTF-8
105     options.encoding = 'UTF-8'
106     options.compilerArgs << "-Xlint:unchecked"
107 }
108
109 compileTestJava {
110     // files are all encoded using UTF-8
111     options.encoding = 'UTF-8'
112 }
113
114 javadoc {
115     options {
116         // files are all encoded using UTF-8
117         encoding = 'UTF-8'
118         version = true
119         author = true
120     }
121 }
122
123 // jabref specific tasks
124 compileJava.dependsOn "generateSource"
125
126 task generateSource(dependsOn: ["generatePluginSource", "generateBstGrammarSource", "generateSearchTreeParserSource"]) {
127     group = 'JabRef'
128     description = 'Generates all Java source files.'
129 }
130
131 task generatePluginSource(type: JavaExec) {
132     group = 'JabRef'
133     description = 'Generates _JabRefPlugin.java with JPF.'
134
135     ext.pluginsDir = "src/main/resources/plugins"
136
137     inputs.dir file(ext.pluginsDir)
138     outputs.file file("src/main/gen/net/sf/jabref/plugin/core/generated/_JabRefPlugin.java")
139
140     main = "net.sf.jabref.plugin.util.CodeGenerator"
141     args = [ext.pluginsDir]
142     classpath = configurations.generateClasspath
143 }
144
145 task generateBstGrammarSource(type: JavaExec) {
146     group = 'JabRef'
147     description = 'Generates BstLexer.java and BstParser.java from the Bst.g grammar file using antlr.'
148
149     File antlrSource = file('src/main/antlr3/net/sf/jabref/bst/Bst.g')
150
151     inputs.file antlrSource
152     outputs.file file('src/main/gen/net/sf/jabref/bst/BstLexer.java')
153     outputs.file file('src/main/gen/net/sf/jabref/bst/BstParser.java')
154
155     main = 'org.antlr.Tool'
156     classpath = configurations.antlr3
157     args = ["-o", file('src/main/gen/net/sf/jabref/bst/'), antlrSource]
158 }
159
160 task generateSearchLexerSource(type: JavaExec) {
161     String grammarFile = "Lexer"
162
163     group = 'JabRef'
164     description = "Generates java files for ${grammarFile}.g antlr2."
165
166     String packagePath = "net/sf/jabref/search"
167     File antlr2Path = file("src/main/antlr2")
168     File genPath = file("src/main/gen")
169
170     File antlrSource = file("$antlr2Path/$packagePath/${grammarFile}.g")
171     File destinationDir = file("$genPath/$packagePath")
172
173     inputs.file antlrSource
174     outputs.file file("$destinationDir/SearchExpression${grammarFile}.java")
175     outputs.file file("$destinationDir/SearchExpression${grammarFile}.smap")
176     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.java")
177     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.txt")
178
179     main = 'antlr.Tool'
180     classpath = configurations.antlr2
181     args = ["-o", destinationDir, antlrSource]
182 }
183
184 task generateSearchParserSource(type: JavaExec, dependsOn: "generateSearchLexerSource") {
185     String grammarFile = "Parser"
186
187     group = 'JabRef'
188     description = "Generates java files for ${grammarFile}.g antlr2."
189
190     String packagePath = "net/sf/jabref/search"
191     File antlr2Path = file("src/main/antlr2")
192     File genPath = file("src/main/gen")
193
194     File antlrSource = file("$antlr2Path/$packagePath/${grammarFile}.g")
195     File destinationDir = file("$genPath/$packagePath")
196
197     inputs.file antlrSource
198     outputs.file file("$destinationDir/SearchExpression${grammarFile}.java")
199     outputs.file file("$destinationDir/SearchExpression${grammarFile}.smap")
200     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.java")
201     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.txt")
202
203     main = 'antlr.Tool'
204     classpath = configurations.antlr2
205     args = ["-o", destinationDir, antlrSource]
206 }
207
208 task generateSearchTreeParserSource(type: JavaExec, dependsOn: "generateSearchParserSource") {
209     String grammarFile = "TreeParser"
210
211     group = 'JabRef'
212     description = "Generates java files for ${grammarFile}.g antlr2."
213
214     String packagePath = "net/sf/jabref/search"
215     File antlr2Path = file("src/main/antlr2")
216     File genPath = file("src/main/gen")
217
218     File antlrSource = file("$antlr2Path/$packagePath/${grammarFile}.g")
219     File destinationDir = file("$genPath/$packagePath")
220
221     inputs.file antlrSource
222     outputs.file file("$destinationDir/SearchExpression${grammarFile}.java")
223     outputs.file file("$destinationDir/SearchExpression${grammarFile}.smap")
224     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.java")
225     outputs.file file("$destinationDir/SearchExpression${grammarFile}TokenTypes.txt")
226
227     main = 'antlr.Tool'
228     classpath = configurations.antlr2
229     args = ["-o", destinationDir, antlrSource]
230 }
231
232 // git support in intellij idea
233 idea.project.ipr {
234     withXml { provider ->
235         provider.node.component.find { it.@name == 'VcsDirectoryMappings' }.mapping.@vcs = 'Git'
236     }
237 }