Skip to content

Commit

Permalink
Refactoring build config
Browse files Browse the repository at this point in the history
  • Loading branch information
benfortuna committed Mar 13, 2021
1 parent d2053b9 commit c4d0cfd
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 127 deletions.
1 change: 0 additions & 1 deletion .gitignore
Expand Up @@ -9,5 +9,4 @@ zones.tab
.classpath
.project
.settings/
gradle.properties
out/
190 changes: 64 additions & 126 deletions build.gradle
Expand Up @@ -12,34 +12,24 @@ buildscript {
plugins {
id 'pl.allegro.tech.build.axion-release' version '1.10.2'
id "nebula.provided-base" version "3.0.3"
id "com.jfrog.bintray" version "1.8.4"
id "net.ltgt.errorprone" version "1.2.1" apply false
id "biz.aQute.bnd.builder" version "5.1.1"
id "biz.aQute.bnd.builder" version "$bndVersion"
}

apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'groovy'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'jacoco'
apply plugin: 'signing'
apply plugin: 'pl.allegro.tech.build.axion-release'
apply plugin: 'nebula.optional-base'
apply from: 'gradle/dist.gradle'

group = 'org.mnode.ical4j'
description = '''
A Java library for reading and writing iCalendar (*.ics) files
'''

sourceCompatibility = 1.8
targetCompatibility = 1.8

ext {
slf4jVersion = '1.7.25'
groovyVersion = '2.5.4'
}
//modularity.mixedJavaRelease 8

repositories {
mavenCentral()
Expand All @@ -50,36 +40,51 @@ dependencies {
// errorproneJavac "com.google.errorprone:javac:9+181-r4173-1"

api "org.slf4j:slf4j-api:$slf4jVersion",
'commons-codec:commons-codec:1.11',
'org.apache.commons:commons-lang3:3.8.1',
'org.apache.commons:commons-collections4:4.1',
"commons-codec:commons-codec:$commonsCodecVersion",
"org.apache.commons:commons-lang3:$commonsLangVersion",
"org.apache.commons:commons-collections4:$commonsCollectionsVersion",
'com.sun.mail:javax.mail:1.6.2'

implementation 'javax.cache:cache-api:1.0.0', optional
implementation "org.codehaus.groovy:groovy-all:$groovyVersion", optional

// optional timezone caching..
implementation 'javax.cache:cache-api:1.1.1', optional

// optional groovy DSL for calendar builder..
implementation "org.codehaus.groovy:groovy:$groovyVersion", optional
implementation "org.codehaus.groovy:groovy-dateutil:$groovyVersion", optional

compileOnly 'biz.aQute.bnd:bndlib:2.3.0'
compileOnly "biz.aQute.bnd:biz.aQute.bndlib:$bndVersion"

testCompile "org.codehaus.groovy:groovy:$groovyVersion",
"org.slf4j:slf4j-log4j12:$slf4jVersion",
"org.ccil.cowan.tagsoup:tagsoup:$tagsoupVersion",
"org.cache2k:cache2k-jcache:$jcacheVersion",
"org.codehaus.groovy:groovy-xml:$groovyVersion"

testImplementation "org.codehaus.groovy:groovy-all:$groovyVersion",
'org.spockframework:spock-core:1.1-groovy-2.4',
'org.ccil.cowan.tagsoup:tagsoup:1.2.1',
"org.slf4j:slf4j-log4j12:$slf4jVersion",
'org.ehcache:ehcache:3.4.0', 'com.sun.mail:javax.mail:1.5.4'
// junit
testImplementation "junit:junit:$junitVersion"

// groovy-test
testImplementation "org.codehaus.groovy:groovy-test:$groovyVersion"

// spock
testImplementation platform("org.spockframework:spock-bom:2.0-M4-groovy-3.0"),
"org.spockframework:spock-core"
}

jacocoTestReport {
reports {
xml.enabled true
html.enabled project.hasProperty('jacoco_htmlReport') \
&& 'true' == project.property('jacoco_htmlReport')
html.enabled 'true' == jacoco_htmlReport
}
}

javadoc {
if (JavaVersion.current().isJava8Compatible()) {
options.addStringOption('Xdoclint:none', '-quiet')
}
options {
links 'https://docs.oracle.com/en/java/javase/11/docs/api/'
}
}

task bundle(type: Bundle) {
Expand All @@ -88,13 +93,13 @@ task bundle(type: Bundle) {
}

task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
archiveClassifier.set('javadoc')
from 'build/docs/javadoc'
}

task sourcesJar(type: Jar) {
from sourceSets.main.allSource
archiveClassifier = 'sources'
archiveClassifier.set('sources')
}

jar.enabled = false
Expand All @@ -109,84 +114,28 @@ artifacts {
scmVersion {
tag {
prefix = 'ical4j'
branchPrefix = [
'ical4j-1.x-maintenance' : 'jdk14_ical4j'
]
branchPrefix = [
'ical4j-2.x-maintenance' : 'jdk7_ical4j'
]
branchPrefix = ['ical4j-1.x-maintenance' : 'jdk14_ical4j']
branchPrefix = ['ical4j-2.x-maintenance' : 'jdk7_ical4j']
}
versionCreator 'versionWithBranch'
branchVersionCreator = [
'master': 'simple'
]
branchVersionCreator = [
'ical4j-1.x-maintenance': 'simple'
]
branchVersionCreator = [
'ical4j-2.x-maintenance': 'simple'
]
branchVersionCreator = ['master': 'simple']
branchVersionCreator = ['ical4j-1.x-maintenance': 'simple']
branchVersionCreator = ['ical4j-2.x-maintenance': 'simple']
}

group = 'org.mnode.ical4j'
description = '''
A Java library for reading and writing iCalendar (*.ics) files
'''
version = scmVersion.version

ext {
isReleaseVersion = !version.endsWith("SNAPSHOT")

// sonatype credentials
sonatype_username = project.hasProperty('sonatype_username') ? project.getProperty('sonatype_username') : ''
sonatype_password = project.hasProperty('sonatype_password') ? project.getProperty('sonatype_password') : ''

// bintray credentials
bintray_user = project.hasProperty('bintray_user') ? project.getProperty('bintray_user') : ''
bintray_key = project.hasProperty('bintray_key') ? project.getProperty('bintray_key') : ''
}

uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
// artefact management
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: sonatype_username, password: sonatype_password)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots") {
authentication(userName: sonatype_username, password: sonatype_password)
}
// maven project model
pom.project {
name project.name
packaging 'jar'
description project.description
url 'http://ical4j.github.io'
// source code management
scm {
url 'https://github.com/ical4j/ical4j'
connection 'scm:git@github.com:ical4j/ical4j.git'
developerConnection 'scm:git@github.com:ical4j/ical4j.git'
}
// open source license
licenses {
license {
name 'iCal4j - License'
url 'https://raw.githubusercontent.com/ical4j/ical4j/master/LICENSE'
distribution 'repo'
}
}
// contributors
developers {
developer {
id 'fortuna'
name 'Ben Fortuna'
}
}
}
}
}
}

publishing {
publications {
mavenArtifacts(MavenPublication) {
ical4j(MavenPublication) {
from components.java
artifact javadocJar
artifact sourcesJar
Expand All @@ -211,39 +160,28 @@ publishing {
}
}
}
}

signing {
required { isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives") }
// sign configurations.archives
sign publishing.publications.mavenArtifacts
}

bintray {
user = bintray_user
key = bintray_key
pkg {
repo = 'maven'
name = 'ical4j'
userOrg = 'ical4j'
licenses = ['BSD']
vcsUrl = 'https://github.com/ical4j/ical4j.git'
version {
name = scmVersion.version
desc = "iCal4j $scmVersion.version"
released = new Date()
vcsTag = "ical4j-$scmVersion.version"
gpg {
sign = isReleaseVersion
}
mavenCentralSync {
sync = isReleaseVersion
user = sonatype_username //OSS user token: mandatory
password = sonatype_password //OSS user password: mandatory
// close = '0' //Optional property. By default the staging repository is closed and artifacts are released to Maven Central. You can optionally turn this behaviour off (by puting 0 as value) and release the version manually.
repositories {
maven {
name = "OSSRH"
url = !isReleaseVersion ? "https://oss.sonatype.org/content/repositories/snapshots/" : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
credentials {
username = System.getenv("MAVEN_USERNAME")
password = System.getenv("MAVEN_PASSWORD")
}
}
// maven {
// name = "GitHubPackages"
// url = uri("https://maven.pkg.github.com/ical4j/ical4j")
// credentials {
// username = System.getenv("GPR_USERNAME")
// password = System.getenv("GPR_TOKEN")
// }
// }
}
// configurations = ['archives']
publications = ['mavenArtifacts']
}

signing {
required { isReleaseVersion }
sign publishing.publications.ical4j
}
20 changes: 20 additions & 0 deletions gradle.properties
@@ -0,0 +1,20 @@
slf4jVersion = 1.7.30
commonsCodecVersion = 1.14
commonsLangVersion = 3.10
commonsCollectionsVersion = 4.4
threetenExtraVersion = 1.5.0
joolVersion = 0.9.14

groovyVersion = 3.0.7
bndVersion = 5.1.1
tagsoupVersion = 1.2.1
jcacheVersion = 1.2.4.Final
junitVersion = 4.13

jacoco_htmlReport = false

sonatype_username=
sonatype_password=

bintray_user=
bintray_key=

0 comments on commit c4d0cfd

Please sign in to comment.