1buildscript {
2
3    def a_user = hasProperty('artifactory_user') ? artifactory_user : System.getenv('artifactory_user')
4    def a_password = hasProperty('artifactory_password') ? artifactory_password : System.getenv('artifactory_password')
5
6    repositories {
7        mavenCentral()
8        jcenter()
9        maven {
10            url 'http://dl.bintray.com/cbeust/maven'
11        }
12        maven {
13            url 'http://oss.jfrog.org/artifactory/plugins-release'
14            credentials {
15                username = "${a_user}"
16                password = "${a_password}"
17            }
18        }
19    }
20
21    dependencies {
22        //Check for the latest version here: http://plugins.gradle.org/plugin/com.jfrog.artifactory
23        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.3"
24        classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.3"
25        classpath "com.netflix.nebula:gradle-extra-configurations-plugin:3.0.3"
26    }
27}
28
29plugins {
30    id "com.jfrog.bintray" version "1.2"
31    id "com.jfrog.artifactory" version "3.1.1"
32    id "org.sonarqube" version "1.0"
33}
34
35version = '6.9.10-SNAPSHOT'
36
37apply plugin: 'java'
38apply plugin: 'nebula.optional-base'
39apply plugin: 'nebula.provided-base'
40
41targetCompatibility = "1.7"
42sourceCompatibility = "1.7"
43
44apply plugin: 'osgi'
45
46repositories {
47    mavenCentral()
48    jcenter()
49    maven {
50        url 'http://dl.bintray.com/cbeust/maven'
51    }
52}
53
54dependencies {
55    compile 'org.beanshell:bsh:2.0b4'
56    compile 'com.beust:jcommander:1.48'
57
58    compile 'org.apache.ant:ant:1.7.0', optional
59    compile 'junit:junit:4.10', optional
60    compile 'org.yaml:snakeyaml:1.15', optional
61
62    provided 'com.google.inject:guice:4.0:no_aop'
63
64    testCompile 'org.assertj:assertj-core:2.0.0'
65    testCompile 'org.testng:testng:6.9.4'
66}
67
68task sourceJar(type: Jar) {
69    group 'Build'
70    description 'An archive of the source code'
71    classifier 'sources'
72    from sourceSets.main.allSource
73}
74
75artifacts {
76    sourceJar
77}
78
79import org.apache.tools.ant.filters.ReplaceTokens
80
81def generatedSourcesFolder = projectDir.toString() + '/src/generated/java'
82
83def dirFrom = projectDir.toString() + '/src/main/resources/org/testng/internal'
84def dirTo = generatedSourcesFolder + "/org/testng/internal"
85def fileFrom = 'VersionTemplateJava'
86def fileTo = 'Version.java'
87
88task removeVersion {
89    delete dirTo + fileTo
90}
91
92sourceSets {
93    generated {
94        java {
95            srcDir 'src/generated/java'
96        }
97        resources {
98            srcDir 'src/generated/resources'
99        }
100    }
101}
102
103sourceSets {
104    main {
105        compileClasspath += generated.output
106        runtimeClasspath += generated.output
107    }
108}
109
110gradle.projectsEvaluated {
111    compileJava.dependsOn(myDir)
112}
113
114task myDir {
115    delete dirTo + "/" + fileTo
116    mkdir(dirTo)
117}
118
119// Include the generated Version.class in the jar
120jar {
121    manifest {
122        instruction 'Bundle-License', 'http://apache.org/licenses/LICENSE-2.0'
123        instruction 'Bundle-Description', 'TestNG is a testing framework.'
124        instruction 'Import-Package',
125            'bsh.*;version="[2.0.0,3.0.0)";resolution:=optional',
126            'com.beust.jcommander.*;version="[1.7.0,3.0.0)";resolution:=optional',
127            'com.google.inject.*;version="[1.2,1.3)";resolution:=optional',
128            'junit.framework;version="[3.8.1, 5.0.0)";resolution:=optional',
129            'org.junit.*;resolution:=optional',
130            'org.apache.tools.ant.*;version="[1.7.0, 2.0.0)";resolution:=optional',
131            'org.yaml.*;version="[1.6,2.0)";resolution:=optional',
132            '!com.beust.testng',
133            '!org.testng.*',
134            '!com.sun.*',
135            '*'
136    }
137    from "$buildDir/classes/generated"
138}
139
140task createVersion(type: Copy, dependsOn: myDir) {
141    println("Creating Version file: ${version} in ${dirTo}")
142    from dirFrom
143    include fileFrom
144    into(dirTo)
145    rename(fileFrom, fileTo)
146    filter(ReplaceTokens, tokens: [version: version])
147}
148
149compileJava.dependsOn(createVersion)
150
151test {
152    useTestNG() {
153        suites 'src/test/resources/testng.xml'
154    }
155//    testLogging.showStandardStreams = true
156    systemProperties = System.getProperties()
157    systemProperties['test.resources.dir'] = 'build/resources/test/'
158}
159
160if (JavaVersion.current().isJava8Compatible()) {
161    allprojects {
162        tasks.withType(Javadoc) {
163            options.addStringOption('Xdoclint:none', '-quiet')
164        }
165    }
166}
167
168sonarqube {
169    properties {
170        property "sonar.host.url", "http://nemo.sonarqube.org"
171        property "sonar.analysis.mode", "preview"
172        property "sonar.github.repository", "cbeust/testng"
173        property "sonar.github.login", "testng-bot"
174    }
175}
176
177apply from: 'gradle/publishing.gradle'
178