-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.gradle
More file actions
127 lines (110 loc) · 3.26 KB
/
build.gradle
File metadata and controls
127 lines (110 loc) · 3.26 KB
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
125
126
127
plugins {
id 'maven-publish'
id 'org.ajoberstar.grgit' version '4.1.0'
}
rootProject.version = calculatePublishVersion()
def specificVersion = calculateVersion()
def isDevelopBuild = rootProject.version.contains('develop')
apply plugin: 'java'
apply plugin: 'maven-publish'
group = 'tech.pegasys'
sourceCompatibility = 11
targetCompatibility = 11
repositories {
jcenter()
mavenCentral()
}
dependencies {
implementation 'com.google.guava:guava:18.0'
testImplementation 'org.assertj:assertj-core:3.16.1'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
test {
useJUnitPlatform()
reports {
junitXml.enabled = true
}
testLogging {
events "passed", "skipped", "failed"
}
}
artifacts {
archives sourcesJar
archives javadocJar
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId "tech.pegasys"
version project.version
from components.java
artifact sourcesJar
versionMapping {
usage('java-api') { fromResolutionOf('runtimeClasspath') }
usage('java-runtime') { fromResolutionResult() }
}
pom {
name = "${project.name}"
url = 'http://github.com/ConsenSys/jblst'
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
scm {
connection = 'scm:git:git://github.com/ConsenSys/jblst.git'
developerConnection = 'scm:git:ssh://github.com/ConsenSys/jblst.git'
url = 'https://github.com/ConsenSys/jblst'
}
}
}
}
}
// Calculate the version that this build would be published under (if it is published)
// If this exact commit is tagged, use the tag
// If this is on a release-* branch, use the most recent tag appended with +develop (e.g. 0.1.1-RC1+develop)
// Otherwise, use develop
def calculatePublishVersion() {
if (!grgit) {
return 'UNKNOWN'
}
def specificVersion = calculateVersion()
def isReleaseBranch = grgit.branch.current().name.startsWith('release-')
if (specificVersion.contains('+')) {
return isReleaseBranch ? "${specificVersion.substring(0, specificVersion.indexOf('+'))}+develop" : "develop"
}
return specificVersion
}
// Calculate the version that teku --version will report (among other places)
// If this exact commit is tagged, use the tag
// Otherwise use git describe --tags and replace the - after the tag with a +
def calculateVersion() {
if (!grgit) {
return 'UNKNOWN'
}
String version = grgit.describe(tags: true)
if (version == null) {
return 'UNKNOWN'
}
def versionPattern = ~/^(?<lastVersion>.*)-(?<devVersion>[0-9]+-g[a-z0-9]+)$/
def matcher = version =~ versionPattern
if (matcher.find()) {
return "${matcher.group("lastVersion")}+${matcher.group("devVersion")}"
}
return version
}
task printVersion() {
doFirst {
print "Specific version: ${specificVersion} Publish version: ${project.version}"
}
}