mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-09 09:09:38 +02:00
Migrate from Ant to Gradle (SMACK-265)
This commit is contained in:
parent
235eca3a3d
commit
201152ef42
767 changed files with 1088 additions and 4296 deletions
319
build.gradle
Normal file
319
build.gradle
Normal file
|
@ -0,0 +1,319 @@
|
|||
allprojects {
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'eclipse'
|
||||
|
||||
ext {
|
||||
shortVersion = '4.0.0'
|
||||
isSnapshot = true
|
||||
gitCommit = getGitCommit()
|
||||
javadocAllDir = new File(buildDir, 'javadoc')
|
||||
documentationDir = new File(projectDir, 'documentation')
|
||||
releasedocsDir = new File(buildDir, 'releasedocs')
|
||||
rootConfigDir = new File(rootDir, 'config')
|
||||
sonatypeCredentialsAvailable = project.hasProperty('sonatypeUsername') && project.hasProperty('sonatypePassword')
|
||||
isReleaseVersion = !isSnapshot
|
||||
signingRequired = isReleaseVersion
|
||||
sonatypeSnapshotUrl = 'https://oss.sonatype.org/content/repositories/snapshots'
|
||||
sonatypeStagingUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2'
|
||||
buildDate = (new java.text.SimpleDateFormat("yyyy-MM-dd")).format(new Date())
|
||||
}
|
||||
group = 'org.igniterealtime.smack'
|
||||
sourceCompatibility = 1.6
|
||||
version = shortVersion
|
||||
if (isSnapshot) {
|
||||
version += '-SNAPSHOT'
|
||||
}
|
||||
|
||||
ext.sharedManifest = manifest {
|
||||
attributes('Implementation-Version': version,
|
||||
'Implementation-GitRevision': ext.gitCommit,
|
||||
'Bundle-Version': version)
|
||||
}
|
||||
}
|
||||
|
||||
task javadocAll(type: Javadoc) {
|
||||
source subprojects.collect {project ->
|
||||
project.sourceSets.main.allJava }
|
||||
destinationDir = javadocAllDir
|
||||
// Might need a classpath
|
||||
classpath = files(subprojects.collect {project ->
|
||||
project.sourceSets.main.compileClasspath})
|
||||
}
|
||||
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
task prepareReleasedocs(type: Copy) {
|
||||
from 'resources/releasedocs'
|
||||
into releasedocsDir
|
||||
filter(ReplaceTokens, tokens: [version: version, releasedate: buildDate])
|
||||
}
|
||||
|
||||
task distributionZip(type: Zip, dependsOn: [javadocAll, prepareReleasedocs]) {
|
||||
classifier buildDate
|
||||
into ('javadoc') {
|
||||
from(javadocAllDir)
|
||||
}
|
||||
into ('releasedocs') {
|
||||
from(releasedocsDir)
|
||||
}
|
||||
into ('releasedocs/documentation') {
|
||||
from(documentationDir)
|
||||
}
|
||||
}
|
||||
|
||||
jar {
|
||||
// Root project should not create empty jar artifact
|
||||
enabled = false
|
||||
}
|
||||
|
||||
import org.gradle.plugins.signing.Sign
|
||||
gradle.taskGraph.whenReady { taskGraph ->
|
||||
if (signingRequired && taskGraph.allTasks.any { it instanceof Sign }) {
|
||||
// Use Java 6's console to read from the console (no good for a CI environment)
|
||||
Console console = System.console()
|
||||
console.printf '\n\nWe have to sign some things in this build.\n\nPlease enter your signing details.\n\n'
|
||||
def password = console.readPassword('GnuPG Private Key Password: ')
|
||||
|
||||
allprojects { ext.'signing.password' = password }
|
||||
|
||||
console.printf '\nThanks.\n\n'
|
||||
}
|
||||
}
|
||||
|
||||
description = """\
|
||||
Smack ${version}
|
||||
An Open Source XMPP (Jabber) client library.
|
||||
"""
|
||||
|
||||
subprojects {
|
||||
apply plugin: 'osgi'
|
||||
apply plugin: 'signing'
|
||||
apply plugin: 'pmd'
|
||||
apply plugin: 'checkstyle'
|
||||
apply plugin: 'findbugs'
|
||||
|
||||
checkstyle {
|
||||
configFile = new File(rootConfigDir, 'checkstyle.xml')
|
||||
ignoreFailures = true
|
||||
}
|
||||
pmd {
|
||||
ignoreFailures = true
|
||||
}
|
||||
findbugs {
|
||||
ignoreFailures = true
|
||||
}
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
tasks.withType(Jar) {
|
||||
baseName = 'smack'
|
||||
appendix project.name
|
||||
}
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
appendix project.name
|
||||
classifier = 'sources'
|
||||
from sourceSets.main.allSource
|
||||
}
|
||||
task javadocJar(type: Jar, dependsOn: javadoc) {
|
||||
appendix project.name
|
||||
classifier = 'javadoc'
|
||||
from javadoc.destinationDir
|
||||
}
|
||||
artifacts {
|
||||
archives sourcesJar
|
||||
archives javadocJar
|
||||
}
|
||||
uploadArchives {
|
||||
repositories {
|
||||
mavenDeployer {
|
||||
if (signingRequired) {
|
||||
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
|
||||
}
|
||||
repository(url: project.sonatypeStagingUrl) {
|
||||
if (sonatypeCredentialsAvailable) {
|
||||
authentication(userName: sonatypeUsername, password: sonatypePassword)
|
||||
}
|
||||
}
|
||||
snapshotRepository(url: project.sonatypeSnapshotUrl) {
|
||||
if (sonatypeCredentialsAvailable) {
|
||||
authentication(userName: sonatypeUsername, password: sonatypePassword)
|
||||
}
|
||||
}
|
||||
pom.project {
|
||||
name 'Smack'
|
||||
packaging 'jar'
|
||||
url 'http://www.igniterealtime.org/projects/smack/'
|
||||
|
||||
scm {
|
||||
url 'https://github.com/igniterealtime/Smack'
|
||||
connection 'scm:git:https://github.com/igniterealtime/Smack.git'
|
||||
developerConnection 'scm:git:https://github.com/igniterealtime/Smack.git'
|
||||
}
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name 'The Apache Software License, Version 2.0'
|
||||
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
|
||||
distribution 'repo'
|
||||
}
|
||||
}
|
||||
|
||||
developers {
|
||||
developer {
|
||||
id 'flow'
|
||||
name 'Florian Schmaus'
|
||||
email 'flow@igniterealtime.org'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rootProject.distributionZip {
|
||||
dependsOn build
|
||||
from(buildDir) {
|
||||
include "$libsDirName/**"
|
||||
}
|
||||
}
|
||||
signing {
|
||||
required { signingRequired }
|
||||
sign configurations.archives
|
||||
}
|
||||
}
|
||||
|
||||
project(':core') {
|
||||
description = """\
|
||||
Smack core components.
|
||||
"""
|
||||
configurations {
|
||||
compression
|
||||
dns
|
||||
}
|
||||
dependencies {
|
||||
compile 'xpp3:xpp3:1.1.4c'
|
||||
testCompile 'junit:junit:4.+'
|
||||
testCompile 'xmlunit:xmlunit:1.5'
|
||||
testCompile 'org.powermock:powermock-module-junit4:1.5.+'
|
||||
testCompile 'org.powermock:powermock-api-mockito:1.5.+'
|
||||
testCompile 'com.jamesmurty.utils:java-xmlbuilder:0.6+'
|
||||
}
|
||||
jar {
|
||||
manifest {
|
||||
attributes('Bundle-SymbolicName': project.group)
|
||||
from sharedManifest
|
||||
}
|
||||
}
|
||||
task compressionJar(type: Jar) {
|
||||
appendix += '-compression'
|
||||
dependsOn classes
|
||||
from sourceSets.main.output
|
||||
include('org/jivesoftware/smack/compression/**')
|
||||
}
|
||||
task dnsJar(type: Jar) {
|
||||
appendix += '-dns'
|
||||
dependsOn classes
|
||||
from sourceSets.main.output
|
||||
include('org/jivesoftware/smack/util/dns/**')
|
||||
include('org/jivesoftware/smack/util/DNSUtil.class')
|
||||
}
|
||||
artifacts {
|
||||
compression compressionJar
|
||||
dns dnsJar
|
||||
}
|
||||
}
|
||||
|
||||
project(':compression-jzlib') {
|
||||
description = """\
|
||||
Compression with jzlib
|
||||
Allow to compress the XMPP stream with help of jzlib.
|
||||
"""
|
||||
dependencies {
|
||||
compile project(path: ':core', configuration: 'compression')
|
||||
compile 'com.jcraft:jzlib:1.1.3'
|
||||
}
|
||||
}
|
||||
|
||||
project(':resolver-dnsjava') {
|
||||
description = """\
|
||||
DNS SRV with dnsjava
|
||||
Use dnsjava for DNS SRV lookups. For platforms that don't provide the
|
||||
javax.naming API (e.g. Android)
|
||||
"""
|
||||
dependencies {
|
||||
compile project(path: ':core', configuration: 'dns')
|
||||
compile 'dnsjava:dnsjava:2.1.1'
|
||||
}
|
||||
}
|
||||
|
||||
project(':resolver-javax') {
|
||||
description = """\
|
||||
DNS SRV with Java7
|
||||
Use javax.naming for DNS SRV lookups. The javax.naming API is availabe in JavaSE
|
||||
since Java7.
|
||||
"""
|
||||
dependencies {
|
||||
compile project(path: ':core', configuration: 'dns')
|
||||
}
|
||||
}
|
||||
|
||||
project(':extensions') {
|
||||
description = """\
|
||||
Smack extensions.
|
||||
Classes and methods that implement support for the various XMPP XEPs
|
||||
(Multi-User Chat, PubSub, …) and other XMPP extensions.
|
||||
"""
|
||||
dependencies {
|
||||
compile project(':core')
|
||||
testCompile project(':core').sourceSets.test.runtimeClasspath
|
||||
// Test dependencies (junit, …) are interfered from the sourceSet.test of the core project
|
||||
// So there is no need to add them explicitly here again
|
||||
}
|
||||
}
|
||||
|
||||
project(':experimental') {
|
||||
description = """\
|
||||
Smack experimental extensions.
|
||||
Classes and methods for XEPs that are in status 'experimental' or that should
|
||||
otherwise carefully considered for deployment. The API may change even
|
||||
between patch versions.
|
||||
"""
|
||||
dependencies {
|
||||
compile project(':core')
|
||||
compile project(':extensions')
|
||||
testCompile project(':core').sourceSets.test.runtimeClasspath
|
||||
// Test dependencies (junit, …) are interfered from the sourceSet.test of the core project
|
||||
// So there is no need to add them explicitly here again
|
||||
}
|
||||
}
|
||||
|
||||
project(':debug') {
|
||||
description = """\
|
||||
Smack GUI debugger.
|
||||
Inspect the exchanged XMPP stanzas.
|
||||
"""
|
||||
dependencies {
|
||||
compile project(':core')
|
||||
testCompile project(':core').sourceSets.test.runtimeClasspath
|
||||
// Test dependencies (junit, …) are interfered from the sourceSet.test of the core project
|
||||
// So there is no need to add them explicitly here again
|
||||
}
|
||||
}
|
||||
|
||||
(subprojects - project(':core'))*.jar {
|
||||
manifest {
|
||||
attributes('Bundle-SymbolicName': project.group + '-' + appendix,
|
||||
'Fragment-Host': project.group)
|
||||
from sharedManifest
|
||||
}
|
||||
}
|
||||
|
||||
def getGitCommit() {
|
||||
def dotGit = new File("$projectDir/.git")
|
||||
if (!dotGit.isDirectory()) return 'non-git build'
|
||||
|
||||
def cmd = 'git describe --tags --dirty=+'
|
||||
def proc = cmd.execute()
|
||||
def gitCommit = proc.text.trim()
|
||||
assert !gitCommit.isEmpty()
|
||||
gitCommit
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue