summaryrefslogtreecommitdiff
path: root/java/build.gradle
blob: 946c4cc3d2aa6596e479a85f4f8808d43c038182 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//

subprojects {
    project.ext.topSrcDir = "$rootProject.projectDir/.."

    project.version = iceVersion
    project.group = "com.zeroc"

    apply plugin: 'java'
    apply plugin: 'idea'
    apply from: "$rootProject.projectDir/gradle/ice.gradle"

    repositories {
        if(slice.jarDir) {
            flatDir {
                name "local"
                dirs slice.jarDir
            }
        }

        if(this.devRepo) {
            maven {
                url this.devRepo
            }
        }

        if(new File("/usr/share/maven-repo").exists()) {
            maven {
                url "/usr/share/maven-repo"
            }
        }

        mavenCentral()
    }

    jar {
        manifest {
            attributes("Built-By": "ZeroC, Inc.")
        }
    }

    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:-options"
        options.encoding = "UTF-8"
        options.deprecation = true
    }

    idea.module {
        excludeDirs -= file(buildDir)
        buildDir.listFiles({d, f ->f != 'generated-src'} as FilenameFilter).each { excludeDirs += it }
    }
}

def exportedProjects = [
    ":glacier2",
    ":ice",
    ":icebox",
    ":icebt",
    ":icegrid",
    ":icepatch2",
    ":icessl",
    ":icestorm"
    ]

task alljavadoc(type: Javadoc) {

    // We rely on Java9+ javadoc features
    enabled = JavaVersion.current() > JavaVersion.VERSION_1_8

    source exportedProjects.collect { project(it).javadoc.source }
    classpath = files(exportedProjects.collect { project(it).javadoc.classpath })
    destinationDir = file("${buildDir}/docs/javadoc")

    if(GradleVersion.current() >= GradleVersion.version('4.1') && JavaVersion.current() > JavaVersion.VERSION_1_10) {
        // TODO: --no-module-directories is an undocumented option required for the
        // generated search to work properly. Without this option, search returns
        // .../undefined/... URLs.
        options.addBooleanOption('-no-module-directories', true)
    }
    options.addBooleanOption('html5', true)
    options.header = 'Ice for Java'
    options.docTitle = "Ice ${iceVersion} API Reference"
}

alljavadoc.dependsOn = exportedProjects.collect { project(it).javadoc.dependsOn }

task clean(type: Delete) {
    delete rootProject.buildDir
}

task dist()
dist.dependsOn(project(":ice").assemble)
dist.dependsOn(project(":icessl").assemble)
dist.dependsOn(project(":glacier2").assemble)
dist.dependsOn(project(":icegrid").assemble)
dist.dependsOn(project(":icebox").assemble)
dist.dependsOn(project(":icebt").assemble)
dist.dependsOn(project(":icediscovery").assemble)
dist.dependsOn(project(":icelocatordiscovery").assemble)
dist.dependsOn(project(":icepatch2").assemble)
dist.dependsOn(project(":icestorm").assemble)
dist.dependsOn(project(":IceGridGUI").assemble)

//
// Used to build the gradle wrapper to automatically download and install
// the version of gradle needed to build Ice.
//
wrapper {
    gradleVersion = "4.10.2"
}