File: build.gradle

package info (click to toggle)
sop-java 7.0.2-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,524 kB
  • sloc: java: 8,357; xml: 170; sh: 98; makefile: 32
file content (124 lines) | stat: -rw-r--r-- 3,260 bytes parent folder | download | duplicates (3)
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
116
117
118
119
120
121
122
123
124
// SPDX-FileCopyrightText: 2021 Paul Schaub <info@pgpainless.org>
//
// SPDX-License-Identifier: Apache-2.0

buildscript {

    repositories {

        maven {
            url "https://plugins.gradle.org/m2/"
        }
        mavenLocal()
        mavenCentral()
    }
}

apply from: 'version.gradle'

allprojects {
    apply plugin: 'java'
    apply plugin: 'idea'
    apply plugin: 'eclipse'

    // Only generate jar for submodules
    // https://stackoverflow.com/a/25445035
    jar {
        onlyIf { !sourceSets.main.allSource.files.isEmpty() }
    }

    group 'org.pgpainless'
    description = "Stateless OpenPGP Protocol API for Java"
    version = shortVersion

    sourceCompatibility = javaSourceCompatibility

    repositories {
        mavenCentral()
    }

    // Reproducible Builds
    tasks.withType(AbstractArchiveTask) {
        preserveFileTimestamps = false
        reproducibleFileOrder = true
    }

    project.ext {
        rootConfigDir = new File(rootDir, 'config')
    }

    def projectDirFile = new File("$projectDir")

}

subprojects {
    apply plugin: 'maven-publish'

    task sourcesJar(type: Jar, dependsOn: classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }
    task javadocJar(type: Jar, dependsOn: javadoc) {
        classifier = 'javadoc'
        from javadoc.destinationDir
    }
    task testsJar(type: Jar, dependsOn: testClasses) {
        classifier = 'tests'
        from sourceSets.test.output
    }

    publishing {
        publications {
            mavenJava(MavenPublication) {
                from components.java
                artifact sourcesJar
                artifact javadocJar
                artifact testsJar
            }
        }
    }

}

def getGitCommit() {
    def projectDirFile = new File("$projectDir")
    def dotGit = new File("$projectDir/.git")
    if (!dotGit.isDirectory()) return 'non-git build'

    def cmd = 'git describe --always --tags --dirty=+'
    def proc = cmd.execute(null, projectDirFile)
    def gitCommit = proc.text.trim()
    assert !gitCommit.isEmpty()

    def srCmd = 'git symbolic-ref --short HEAD'
    def srProc = srCmd.execute(null, projectDirFile)
    srProc.waitForOrKill(10 * 1000)
    if (srProc.exitValue() == 0) {
        // Only add the information if the git command was
        // successful. There may be no symbolic reference for HEAD if
        // e.g. in detached mode.
        def symbolicReference = srProc.text.trim()
        assert !symbolicReference.isEmpty()
        gitCommit += "-$symbolicReference"
    }

    gitCommit
}

task javadocAll(type: Javadoc) {
    def currentJavaVersion = JavaVersion.current()
    if (currentJavaVersion.compareTo(JavaVersion.VERSION_1_9) >= 0) {
        options.addStringOption("-release", "8");
    }
    source subprojects.collect {project ->
        project.sourceSets.main.allJava }
    destinationDir = new File(buildDir, 'javadoc')
    // Might need a classpath
    classpath = files(subprojects.collect {project ->
        project.sourceSets.main.compileClasspath})
    options.linkSource = true
    options.use = true
    options.links = [
            "https://docs.oracle.com/javase/${sourceCompatibility.getMajorVersion()}/docs/api/",
    ] as String[]
}