summaryrefslogtreecommitdiff
path: root/java/build.gradle
blob: 2ce84edf151a3b844b6e933177dc2655f6572f53 (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
113
114
115
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//

import org.gradle.util.GradleVersion

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(this.devRepo) {
            maven {
                url this.devRepo
            }
        }

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

        mavenCentral()
    }

    // Only enable infer module path with Java 9 and up
    if(GradleVersion.current() >= GradleVersion.version('6.4')) {
        java {
            modularity.inferModulePath = targetJavaRelease.toInteger() > 8
        }
    }

    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 }
    }
}

if(!System.env.ICE_BIN_DIST?.split(" ").find{ it == 'all' || it.contains('java')}) {
    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
        exclude "**/module-info.java"
        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.7') &&
           JavaVersion.current() > JavaVersion.VERSION_1_10 && JavaVersion.current() <= JavaVersion.VERSION_11) {
            // --no-module-directories is an undocumented option required for the generated search to work properly.
            // Without this option, search returns ../undefined/... URLs.
            //
            // This option was removed on JDK 13 https://bugs.openjdk.java.net/browse/JDK-8215582
            //
            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
}

if(!System.env.ICE_BIN_DIST?.split(" ").find{ it == 'all' || it.contains('java')}) {
    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)

    project(":test").compileJava.dependsOn(dist)
}