Without this setting, Gradle would run multiple "test" tasks from multiple subprojects concurrently, but each "test" task would only run a single test at a time. Some of our subprojects' test tasks take a long time to complete, which could easily leave us sequentially testing on just one or two CPU cores while other cores sit idle. With this change, Gradle will use as many task slots as are available (e.g., when run with "--parallel") to run multiple simultaneous JUnit test classes within any given subproject. This seems to be fine for us: I am unaware of any shared global state that would cause conflicts between two test classes within any given subproject.
162 lines
3.5 KiB
Groovy
162 lines
3.5 KiB
Groovy
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// plugin configuration must precede everything else
|
|
//
|
|
|
|
plugins {
|
|
id 'com.diffplug.gradle.p2.asmaven' version '3.10.0'
|
|
id 'com.github.hauner.jarTest' version '1.0.1' apply false
|
|
id 'de.undercouch.download'
|
|
id 'nebula.lint' version '8.3.1'
|
|
id "nebula.source-jar" version '7.0.1' apply false
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// required Eclipse components
|
|
//
|
|
|
|
p2AsMaven {
|
|
group 'eclipse-deps', {
|
|
repoEclipse '4.7.2'
|
|
slicingOption 'latestVersionOnly', 'true'
|
|
iu 'org.eclipse.core.commands'
|
|
iu 'org.eclipse.core.contenttype'
|
|
iu 'org.eclipse.core.jobs'
|
|
iu 'org.eclipse.core.resources'
|
|
iu 'org.eclipse.core.runtime'
|
|
iu 'org.eclipse.equinox.app'
|
|
iu 'org.eclipse.equinox.common'
|
|
iu 'org.eclipse.equinox.preferences'
|
|
iu 'org.eclipse.jdt.core'
|
|
iu 'org.eclipse.jface'
|
|
iu 'org.eclipse.osgi'
|
|
iu 'org.eclipse.pde.core'
|
|
iu 'org.eclipse.swt'
|
|
iu 'org.eclipse.ui.ide'
|
|
iu 'org.eclipse.ui.workbench'
|
|
}
|
|
group 'wst-deps', {
|
|
repo 'http://download.eclipse.org/releases/oxygen'
|
|
slicingOption 'latestVersionOnly', 'true'
|
|
iu 'org.eclipse.wst.jsdt.core'
|
|
iu 'org.eclipse.wst.jsdt.ui'
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// common Java setup shared by multiple projects
|
|
//
|
|
|
|
group name
|
|
version '1.4.4-SNAPSHOT'
|
|
|
|
subprojects { subproject ->
|
|
// skip generic Java setup for the few projects that have no Java code whatsoever
|
|
switch (subproject.name) {
|
|
case 'com.ibm.wala-repository':
|
|
case ~/.*_feature/:
|
|
return
|
|
}
|
|
|
|
apply plugin: 'java'
|
|
apply plugin: 'maven-publish'
|
|
apply plugin: 'nebula.source-jar'
|
|
|
|
sourceCompatibility = 1.8
|
|
|
|
version rootProject.version
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
url "$rootProject.buildDir/p2asmaven/maven"
|
|
}
|
|
}
|
|
|
|
jar.manifest.from('META-INF/MANIFEST.MF')
|
|
|
|
task afterEclipseBuildshipImport(dependsOn: processTestResources)
|
|
|
|
test {
|
|
include '**/*Test.class'
|
|
include '**/*TestCase.class'
|
|
include '**/*Tests.class'
|
|
include '**/Test*.class'
|
|
exclude '**/*AndroidLibs*.class'
|
|
|
|
maxParallelForks = Integer.MAX_VALUE
|
|
}
|
|
}
|
|
|
|
task afterEclipseBuildshipImport(type: Exec) {
|
|
commandLine './revert-launchers.sh'
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// find platform-specific SWT implementations
|
|
//
|
|
|
|
def osgi_platform
|
|
|
|
switch (System.getProperty('os.name')) {
|
|
case ~/Mac OS X/:
|
|
osgi_platform = 'cocoa.macosx.x86_64'
|
|
break
|
|
case ~/Windows.*/:
|
|
osgi_platform = 'win32.win32.x86_64'
|
|
break
|
|
case ~/Linux/:
|
|
osgi_platform = 'gtk.linux.x86_64'
|
|
break
|
|
}
|
|
|
|
System.setProperty('osgi.platform', osgi_platform)
|
|
|
|
subprojects {
|
|
configurations.all {
|
|
resolutionStrategy {
|
|
// failOnVersionConflict()
|
|
dependencySubstitution {
|
|
substitute module('eclipse-deps:org.eclipse.swt.${osgi.platform}') with module("eclipse-deps:org.eclipse.swt.${System.getProperty('osgi.platform')}:3.+")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// optional lint checking of Gradle scripts
|
|
//
|
|
|
|
allprojects {
|
|
apply plugin: 'nebula.lint'
|
|
gradleLint.alwaysRun = false
|
|
gradleLint {
|
|
rules = ['all-dependency']
|
|
excludedRules = [
|
|
'duplicate-dependency-class',
|
|
'transitive-duplicate-dependency-class',
|
|
'unused-dependency',
|
|
]
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// disable Javadoc linter until documentation is in better shape
|
|
//
|
|
|
|
allprojects {
|
|
tasks.withType(Javadoc) {
|
|
options.addStringOption('Xdoclint:none', '-quiet')
|
|
}
|
|
}
|