blob: f9b64763b1ccdb314fddac451b736f8aaa22a2af [file] [log] [blame]
import org.apache.tools.ant.filters.ReplaceTokens
import org.gradle.api.tasks.StopActionException
import virgobuild.Config
apply plugin: virgobuild.VirgoToolsPlugin
if (System.properties['eclipse.build'] == 'true') {
// https://gradle.org/docs/current/userguide/build_environment.html
// https://wiki.eclipse.org/Hudson#Why_use_a_Proxy.3F
println "Checking that proxy properties are set before proceeding..."
if (!System.properties['http.proxyHost'] && !System.properties['http.proxyPort']) {
throw new StopActionException("Properties 'http.proxyHost' and 'http.proxyPort' are both not set.")
}
println 'http.proxyHost = ' + System.properties['http.proxyHost']
println 'http.proxyPort = ' + System.properties['http.proxyPort']
println 'http.nonProxyHosts = ' + System.properties['http.nonProxyHosts']
println 'Done.'
}
buildscript {
repositories {
mavenLocal()
maven {
url "https://plugins.gradle.org/m2/"
}
if (System.properties['local.build'] == 'true') {
jcenter()
maven { url 'https://repo.spring.io/libs-release' }
}
}
dependencies {
classpath "gradle.plugin.org.eclipse.virgo.bundlor:bundlor-plugin:0.2"
if (System.properties['include.docs'] == 'true') {
// docbook processing
classpath 'net.sf.docbook:docbook-xsl:1.78.1:resources@zip'
// TODO use docbook 4.5 to reduce buildtime? 4.5 DTDs are not available locally?
// TODO alternatively switch to docbook 5.0?
classpath 'net.sf.docbook:docbook-xml:5.0:xsd-resources@zip'
classpath 'net.sf.docbook:docbook-xsl-saxon:1.0.0'
classpath 'org.apache.xerces:resolver:2.9.1'
classpath 'org.apache.xerces:xercesImpl:2.9.1'
classpath 'saxon:saxon:6.5.3'
classpath 'net.sf.xslthl:xslthl:2.0.1'
classpath 'org.apache.xmlgraphics:fop:0.95-1@jar'
classpath 'org.apache.xmlgraphics:xmlgraphics-commons:1.3'
classpath 'org.apache.xmlgraphics:batik-bridge:1.7@jar'
classpath 'org.apache.xmlgraphics:batik-util:1.7@jar'
classpath 'org.apache.xmlgraphics:batik-css:1.7@jar'
classpath 'org.apache.xmlgraphics:batik-dom:1.7'
classpath 'org.apache.xmlgraphics:batik-svg-dom:1.7@jar'
classpath 'org.apache.avalon.framework:avalon-framework-api:4.3.1'
}
}
}
def timestamp = new Date().format('yyyyMMddHHmmss', TimeZone.getTimeZone('GMT'))
defaultTasks 'clean', 'jar', 'build', 'distZip'
def Properties versions = new Properties()
versions.load(new FileInputStream(project.rootProject.file('gradle.properties')))
project.ext.props = versions
allprojects() {
if (System.properties['ci.build'] == 'true') {
version = '3.7.1.D-' + timestamp
} else {
version = '3.7.0.RELEASE'
}
}
ext.appsProjects = [
project(':apps:org.eclipse.virgo.apps.repository.core'),
project(':apps:org.eclipse.virgo.apps.repository.web'),
project(':apps:org.eclipse.virgo.apps.splash'),
]
ext.kernelProjects = [
project(':kernel:org.eclipse.virgo.kernel.agent.dm'),
project(':kernel:org.eclipse.virgo.kernel.artifact'),
project(':kernel:org.eclipse.virgo.kernel.deployer'),
project(':kernel:org.eclipse.virgo.kernel.deployer.dm'),
project(':kernel:org.eclipse.virgo.kernel.dmfragment'),
project(':kernel:org.eclipse.virgo.kernel.equinox.extensions'),
project(':kernel:org.eclipse.virgo.kernel.kerneldmfragment'),
project(':kernel:org.eclipse.virgo.kernel.model'),
project(':kernel:org.eclipse.virgo.kernel.osgi'),
project(':kernel:org.eclipse.virgo.kernel.services'),
project(':kernel:org.eclipse.virgo.kernel.userregion'),
project(':kernel:org.eclipse.virgo.kernel.userregionfactory'),
project(':kernel:org.eclipse.virgo.management.console'),
project(':kernel:org.eclipse.virgo.management.fragment'),
project(':kernel:org.eclipse.virgo.shell.command'),
]
ext.medicProjects = [
project(':medic:org.eclipse.virgo.medic'),
project(':medic:org.eclipse.virgo.medic.core'),
project(':medic:org.eclipse.virgo.medic.logbackclassicfragment'),
project(':medic:org.eclipse.virgo.medic.logbackcorefragment'),
]
ext.nanoProjects = [
project(':nano:org.eclipse.virgo.nano.core'),
project(':nano:org.eclipse.virgo.nano.deployer'),
project(':nano:org.eclipse.virgo.nano.deployer.api'),
project(':nano:org.eclipse.virgo.nano.deployer.hot'),
project(':nano:org.eclipse.virgo.nano.management'),
project(':nano:org.eclipse.virgo.nano.management.controller'),
project(':nano:org.eclipse.virgo.nano.services.concurrent'),
project(':nano:org.eclipse.virgo.nano.services.ds'),
]
ext.repositoryProjects = [
project(':repository:org.eclipse.virgo.repository'),
]
ext.testUtils = [
project(':test:org.eclipse.virgo.test.stubs'),
project(':medic:org.eclipse.virgo.medic.test'),
project(':kernel:org.eclipse.virgo.kernel.stubs'),
project(':test:org.eclipse.virgo.test.tools'),
]
ext.utilProjects = [
project(':util:org.eclipse.virgo.util.common'),
project(':util:org.eclipse.virgo.util.env'),
project(':util:org.eclipse.virgo.util.io'),
project(':util:org.eclipse.virgo.util.jmx'),
project(':util:org.eclipse.virgo.util.math'),
project(':util:org.eclipse.virgo.util.osgi'),
project(':util:org.eclipse.virgo.util.osgi.manifest'),
project(':util:org.eclipse.virgo.util.parser.launcher'),
project(':util:org.eclipse.virgo.util.parser.manifest'),
]
ext.webProjects = [
project(':web:org.eclipse.virgo.web.core'),
project(':web:org.eclipse.virgo.web.dm'),
project(':web:org.eclipse.virgo.web.tomcat.support'),
project(':web:org.eclipse.virgo.web.enterprise.appdeployer'),
project(':web:org.eclipse.virgo.web.enterprise.applistener'),
project(':web:org.eclipse.virgo.web.enterprise.catalina.fragment.webbeans'),
project(':web:org.eclipse.virgo.web.enterprise.javax.persistence.extension'),
project(':web:org.eclipse.virgo.web.enterprise.javax.persistence.provider.initializer'),
project(':web:org.eclipse.virgo.web.enterprise.jsf.support'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.bval'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.jotm'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.jpa'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.fragment.webbeans'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.initialiser'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.jpa.integration'),
project(':web:org.eclipse.virgo.web.enterprise.openejb.tomcat.factory'),
project(':web:org.eclipse.virgo.web.enterprise.openwebbeans.initialiser'),
project(':web:org.eclipse.virgo.web.enterprise.persistence.openejb.classloading.hook'),
project(':web:org.eclipse.virgo.web.enterprise.security'),
project(':web:org.eclipse.virgo.web.enterprise.security.openejb.classloading.hook'),
project(':web:org.eclipse.virgo.web.enterprise.security.valve'),
project(':web:org.eclipse.virgo.web.enterprise.services.accessor'),
project(':web:org.eclipse.virgo.web.servlet.adapter'),
project(':web:org.eclipse.virgo.web.spring.integration'),
project(':web:org.eclipse.virgo.web.war.deployer'),
]
ext.integrationTestProjects = [
project(':test:org.eclipse.virgo.test.launcher'),
project(':test:org.eclipse.virgo.test.framework'),
project(':util:org.eclipse.virgo.util.integrationtest'),
// project(':medic:org.eclipse.virgo.medic.integrationtest'),
]
ext.smokeTestProjects = [
project(':packaging:nano:org.eclipse.virgo.nano.smoketest'),
project(':packaging:kernel:org.eclipse.virgo.kernel.smoketest'),
project(':packaging:jetty-server:org.eclipse.virgo.jetty.smoketest'),
project(':packaging:tomcat-server:org.eclipse.virgo.tomcat.smoketest'),
]
ext.javaProjects = ext.utilProjects + ext.medicProjects + ext.repositoryProjects + ext.nanoProjects + ext.kernelProjects + ext.webProjects + ext.appsProjects + ext.testUtils + ext.integrationTestProjects + smokeTestProjects +
[
project(':nano:org.eclipse.virgo.nano.authentication'),
project(':nano:org.eclipse.virgo.nano.shutdown'),
]
if (System.properties['local.build'] == 'true') {
ext.javaProjects += [
// project(':system-tests:org.eclipse.virgo.server.svt'),
// project(':performance-tests:org.eclipse.virgo.qa.performance'),
]
}
ext.aspectjProjects = [
// these projects contain aspects
project(':util:org.eclipse.virgo.util.jmx'),
project(':test:org.eclipse.virgo.test.stubs'),
project(':medic:org.eclipse.virgo.medic'),
project(':nano:org.eclipse.virgo.nano.core'),
// these projects are woven
project(':kernel:org.eclipse.virgo.kernel.model'),
project(':kernel:org.eclipse.virgo.kernel.osgi'),
]
if (System.properties['local.build'] == 'true') {
if (System.properties['weaving.enabled'] == 'true') {
ext.aspectjProjects + [
project(':apps:org.eclipse.virgo.apps.repository.core'),
project(':kernel:org.eclipse.virgo.kernel.deployer'),
project(':kernel:org.eclipse.virgo.kernel.deployer.dm'),
project(':kernel:org.eclipse.virgo.kernel.dmfragment'),
project(':kernel:org.eclipse.virgo.shell.command'),
project(':repository:org.eclipse.virgo.repository'),
project(':web:org.eclipse.virgo.web.core'),
project(':web:org.eclipse.virgo.web.dm'),
project(':web:org.eclipse.virgo.web.tomcat.support'),
]
}
}
/*
TODO - What about these modules? Do they have AspectJ nature in Eclipse?
aspectpath project(':nano:org.eclipse.virgo.nano.deployer.api')
aspectpath project(':nano:org.eclipse.virgo.nano.deployer.hot')
aspectpath project(':kernel:org.eclipse.virgo.kernel.services')
*/
ext.packagingProjects = [
project(':packaging:nano'),
project(':packaging:kernel'),
project(':packaging:jetty-server'),
project(':packaging:tomcat-server'),
]
ext {
// used when copying features and products
tokenMap = [
'VIRGO.VERSION': version,
'OSGI.SERVICES.VERSION': osgiServicesVersion, // used in oev.kernel.userregion.properties
'OSGI.ENTERPRISE.VERSION': osgiEnterpriseVersion,
'EQUINOX.HTTP.JETTY.VERSION': equinoxHttpJettyVersion,
'EQUINOX.APP.VERSION': equinoxAppVersion,
'EQUINOX.COMMON.VERSION': equinoxCommonVersion,
'EQUINOX.CONFIGADMIN.VERSION': equinoxCmVersion,
'EQUINOX.DS.VERSION': equinoxDsVersion,
'EQUINOX.SC.VERSION': equinoxSimpleConfiguratorVersion,
'EQUINOX.SC.M.VERSION': equinoxSimpleConfiguratorManipulatorVersion,
'EQUINOX.CONSOLE.VERSION': equinoxConsoleVersion,
'EQUINOX.CONSOLE.SSH.VERSION': equinoxConsoleSshVersion,
'EQUINOX.EVENT': equinoxEventVersion,
'EQUINOX.FRKA.E.VERSION': equinoxFrameworkadminEquinoxVersion,
'EQUINOX.FRKA.VERSION': equinoxFrameworkadminVersion,
'EQUINOX.PFRCS.VERSION': equinoxPreferencesVersion,
'REGION.VERSION': equinoxRegionVersion,
'EQUINOX.REGISTRY.VERSION': equinoxRegistryVersion,
'EQUINOX.SECURITY.VERSION': equinoxSecurityVersion,
'CONTENTTYPE.VERSION': eclipseCoreContenttypeVersion,
'JOBS.VERSION': eclipseCoreJobsVersion,
'CORE.NET.VERSION': eclipseCoreNetVersion,
'CORE.VERSION': eclipseCoreRuntimeVersion,
'ECF.FT.VERSION': eclipseEcfFiletransferVersion,
'ECF.I.VERSION': eclipseEcfIdentityVersion,
'ECF.P.FT.VERSION': eclipseEcfProviderFiletransferVersion,
'ECF.SSL.VERSION': eclipseEcfSslVersion,
'ECF.VERSION': eclipseEcfVersion,
'MINA.CORE.VERSION': minaCoreVersion,
'SSHD.CORE.VERSION': apacheSshdCoreVersion,
'FELIX.GOGO.COMMAND.VERSION': gogoCommandVersion,
'FELIX.GOGO.RUNTIME.VERSION': gogoRuntimeVersion,
'FELIX.GOGO.SHELL.VERSION': gogoShellVersion,
'JOLOKIA.VERSION': jolokiaVersion,
'SPRING.VERSION': springframeworkVersion,
'GEMINI.MANAGEMENT.VERSION': geminiManagementVersion,
// TODO rename to 'GENIMI.BLUEPRINT.VERSION'
'SPRING.DM.VERSION': geminiBlueprintVersion,
'GEMINI.WEB.VERSION': geminiWebVersion,
'CATALINA.VERSION': apacheCatalinaVersion,
'ASPECTJ': aspectjVersion,
'LOGBACK.CLASSIC.VERSION': logbackVersion,
'LOGBACK.CORE.VERSION': logbackVersion,
'SLF4J.API': slf4jVersion,
'SLF4J.JCL': slf4jVersion,
'SLF4J.LOG4J': slf4jVersion,
'C.FILEUPLOAD.VERSION': commonsFileuploadVersion,
'C.IO.VERSION': commonsIoVersion,
'SCANNOTATION' :scannotationVersion,
'JAVASSIST': javassistVersion,
'JOTM': jotmVersion,
'OBJECTWEB.ASM': objectwebAsmVersion,
'JAVAX.ACTIVATION': javaxActivationVersion,
'JAVAX.ANNOTATION': javaxAnnotationVersion,
'JAVAX.EJB': javaxEjbVersion,
'JAVAX.EL': javaxElVersion,
'JAVAX.INJECT': javaxInjectVersion,
'JAVAX.JMS': javaxJmsVersion,
'JAVAX.MAIL': javaxMailVersion,
'JAVAX.PERSISTENCE': javaxPersistenceVersion,
'JAVAX.RESOURCE': javaxResourceVersion,
'JAVAX.SECURITY.AUTH': javaxSecurityAuthMessageVersion,
'JAVAX.SECURITY.JACC': javaxSecurityJaccVersion,
// TODO remove duplication 'JAVAX.SERVLET.VERSION' and 'JAVAX.SERVLET'
'JAVAX.SERVLET.VERSION': javaxServletVersion,
'JAVAX.SERVLET': javaxServletVersion,
'JAVAX.SERVLET.JSP': javaxServletJspVersion,
'JSTL.API': javaxServletJspJstlApiVersion,
'JSTL.IMPL': javaxServletJspJstlImplOsgiVersion,
'JAVAX.TRANSACTION': javaxTransactionVersion,
'JAVAX.VALIDATION': javaxValidationVersion,
'JAVAX.WEBSOCKET': javaxWebsocketVersion,
'JAVAX.WSDL': javaxWsdlVersion,
'JAVAX.WS.RS': javaxWsRsVersion,
'JAVAX.XML.RPC': javaxXmlRpcVersion,
'JETTY.VERSION': jettyVersion,
'RAP.RWT.VERSION': rapRwtVersion,
'RAP.RWT.OSGI.VERSION': rapRwtOsgiVersion,
'RAP.JFACE.VERSION': rapJfaceVersion,
'RAP.JFACE.DATABINDING.VERSION': rapJfaceDatabindingVersion,
'P2.A.R.VERSION': p2ArtifactRepositoryVersion,
'P2.CONSOLE.VERSION': p2ConsoleVersion,
'P2.CORE.VERSION': p2CoreVersion,
'P2.DIRECTOR.VERSION': p2DirectorVersion,
'P2.ENGINE.VERSION': p2EngineVersion,
'P2.GC.VERSION': p2GarbageCollectorVersion,
'P2.JP.VERSION': p2JarProcessorVersion,
'P2.METADATA.VERSION': p2MetadataVersion,
'P2.M.R.VERSION': p2MetadataRepositoryVersion,
'P2.PUBLISHER.VERSION': p2PublisherVersion,
'P2.P.E.VERSION': p2PublisherEclipseVersion,
'P2.REPOSITORY.VERSION': p2RepositoryVersion,
'P2.T.E.VERSION': p2TouchpointEclipseVersion,
'P2.T.N.VERSION': p2TouchpointNativesVersion,
'P2.T.ECF.VERSION': p2TransportEcfVersion,
'QUARTZ': quartzVersion,
'WB.COMMON': apacheOpenwebbeansVersion,
'WB.EE': apacheOpenwebbeansEEVersion,
'WB.EJB': apacheOpenwebbeansEEVersion,
'WB.IMPL': apacheOpenwebbeansVersion,
'WB.SPI': apacheOpenwebbeansVersion,
'WB.WEB': apacheOpenwebbeansVersion,
'WB.JSF': apacheOpenwebbeansVersion,
'WB.TOMCAT7': apacheOpenwebbeansTomcat7Version,
'COMMOMS.BEANUTILS': commonsBeanutilsVersion,
'COMMONS.CLI': commonsCliVersion,
'COMMONS.COLLECTIONS': commonsCollectionsVersion,
'COMMONS.DBCP': commonsDbcpVersion,
'COMMONS.LANG': commonsLangVersion,
'COMMONS.POOL': commonsPoolVersion,
'BVAL': apacheBvalVersion,
'G.CONNECTOR': geronimoComponentsConnectorVersion,
'G.TRANSACTIONS': geronimoComponentsTransactionVersion,
'G.MANAGEMENT': geronimoSpecsJ2eeManagementVersion,
'G.OSGI.LOCATOR': geronimoSpecsOsgiLocatorVersion,
'G.OSGI.REGISTRY': geronimoSpecsOsgiRegistryVersion,
'CDI.API': cdiApiVersion,
'OE.API': apacheOpenejbVersion,
'OE.CORE': apacheOpenejbCoreVersion,
'OE.JAVAAGENT': apacheOpenejbVersion,
'OE.JEE': apacheOpenejbVersion,
'OE.LOADER': apacheOpenejbVersion,
'OE.JPA.INTEGRATION': apacheOpenejbVersion,
'XB.ASM': apacheXBeanAsmVersion,
'XB.BUNDLEUTILS': apacheXBeanBundleutilsVersion,
'XB.FINDER': apacheXBeanFinderVersion,
'XB.NAMING': apacheXBeanNamingVersion,
'XB.REFLECT': apacheXBeanReflectVersion,
'EL.ANTLR': eclipsePersistenceAntlrVersion,
'EL.ASM': eclipsePersistenceAsmVersion,
'EL.CORE': eclipsePersistenceCoreVersion,
'EL.JPA': eclipsePersistenceJpaVersion,
'EL.JPQL': eclipsePersistenceJpaJpqlVersion,
'FACES.API': glassfishJavaxFacesVersion,
'FACES.IMPL': glassfishComSunFacesVersion,
'DERBY': apacheDerbyVersion,
// used in documentation
'project.name': 'Virgo',
'runtime.category': 'EclipseRT',
'umbrella.product.name': 'Virgo Runtime Environment',
'umbrella.product.name.short': 'Virgo Runtime',
'tomcat.product.name': 'Virgo Server for Apache Tomcat',
'tomcat.product.name.short': 'VTS',
'jetty.product.name': 'Virgo Jetty Server',
'jetty.product.name.short': 'VJS',
'kernel.product.name': 'Virgo Kernel',
'kernel.product.name.short': 'VK',
'nano.product.name': 'Virgo Nano',
'nano.product.name.short': 'VN',
'nanoweb.product.name': 'Virgo Nano Web',
'snaps.product.name': 'Virgo Snaps',
'snaps.product.name.short': 'VS',
'ebr': 'SpringSource Enterprise Bundle Repository',
'p2repo': "http://download.eclipse.org/virgo/updatesite/${version}".toString(),
'bundle.version': "${version}".toString(),
]
}
configure(javaProjects + aspectjProjects) {
apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = '1.7'
targetCompatibility = '1.7'
compileJava {
options.encoding = 'utf-8'
options.fork = true
doFirst {
options.forkOptions.with {
executable = 'java'
jvmArgs = [
'-cp',
configurations.ecj.asPath,
'org.eclipse.jdt.internal.compiler.batch.Main',
'-warn:-unused'
]
}
}
}
compileTestJava {
options.encoding = 'utf-8'
options.fork = true
doFirst {
options.forkOptions.with {
executable = 'java'
jvmArgs = [
'-cp',
configurations.ecj.asPath,
'org.eclipse.jdt.internal.compiler.batch.Main',
'-warn:-unused'
]
}
}
}
test {
if (System.properties['ci.build'] == 'true') {
ignoreFailures=true
}
}
configurations { ecj { } }
dependencies {
ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "4.4.2"
testCompile group: 'junit', name: 'junit', version: junitVersion, configuration: "compile", ext: "jar"
testRuntime group: 'org.eclipse.virgo.mirrored', name: "org.apache.commons.logging", version: commonsLoggingVersion, ext: "jar"
}
eclipse {
jdt {
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
}
}
configure(ext.utilProjects + ext.medicProjects + ext.repositoryProjects + ext.nanoProjects + ext.kernelProjects + ext.webProjects + ext.appsProjects) {
assemble.doLast {
println '|--> Assembled Jar File: ' + jar.archivePath
if(System.properties['ci.build.signjars'] == 'true') {
println '|--> Normalize Jar File: ' + jar.archivePath
project.javaexec {
main = 'org.eclipse.equinox.internal.p2.jarprocessor.Main'
classpath Config.on(project).jarProcessorJar
args = [
'-repack',
jar.archivePath
]
}
println '|--> Signing Jar File: ' + jar.archivePath
exec {
workingDir jar.destinationDir
commandLine 'curl',
'-o',
jar.archivePath,
'-F',
"file=@${jar.archivePath}",
'--show-error',
'http://build.eclipse.org:31338/sign'
}
println '|--> Compress Jar File: ' + jar.archivePath
project.javaexec {
main = 'org.eclipse.equinox.internal.p2.jarprocessor.Main'
classpath Config.on(project).jarProcessorJar
args = [
'-pack',
jar.archivePath
]
}
} else {
println '|--> Skipping normalize/signing/compression of Jar File: ' + jar.archivePath
}
}
}
configure(javaProjects) {
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
}
configure(javaProjects) {
apply plugin: 'maven-publish'
publishing {
repositories {
maven {
name = "BuildEclipseOrg"
url "/opt/public/rt/virgo/gradle/bundles"
}
}
publications {
virgo(MavenPublication) {
groupId 'org.eclipse.virgo'
from components.java
artifact sourcesJar {
classifier "sources"
}
}
}
}
}
configure(javaProjects + aspectjProjects + packagingProjects + project(":org.eclipse.virgo.site")) {
repositories {
mavenCentral()
ivy {
url "http://build.eclipse.org/rt/virgo/ivy/bundles/release/"
layout "pattern", { artifact "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" }
}
ivy {
url "http://build.eclipse.org/rt/virgo/ivy/bundles/milestone/"
layout "pattern", { artifact "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" }
}
}
}
configure(javaProjects) {
if (System.properties['ci.build'] == 'true' || System.properties['include.findbugs'] == 'true') {
apply plugin: 'findbugs'
findbugs {
toolVersion = "3.0.1"
sourceSets = [sourceSets.main]
ignoreFailures = true
effort = "max"
reportLevel = "high"
excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
}
}
}
configure(javaProjects) {
if (System.properties['ci.build'] == 'true' || System.properties['include.jacoco'] == 'true') {
apply plugin: "jacoco"
jacoco { toolVersion = "0.7.4.201502262128" }
}
}
configure(packagingProjects) {
configurations {
aspects { // visibility="private"
description = "Aspects to be woven" }
nanoLib {
description = "Dependencies to be packaged in lib"
transitive = true
exclude module: "org.eclipse.osgi"
}
nanoLibEndorsed { description = "Dependencies to be packaged in endorsed" }
nanoLibPersistence {
transitive = false
description = "Dependencies to be packaged in lib/persistence" }
nanoPickup {
transitive = false
description = "Dependencies to be packaged in pickup"
}
kernelPluginsExtras {
transitive = false
description = "Dependencies to be published without p2 into Kernel plugin directory"
}
repositoryExt {
transitive = false
description="Dependencies to be packaged in repository/ext"
}
}
}
ext.wabProjects = [
project(':apps:org.eclipse.virgo.apps.splash'),
project(':kernel:org.eclipse.virgo.management.console'),
]
configure(utilProjects + medicProjects + repositoryProjects + nanoProjects + kernelProjects + webProjects + appsProjects) {
apply plugin: 'org.eclipse.virgo.bundlor'
task('addProjectVersionToGradlePropertiesTask', type: Copy) {
ext.outputDir = new File(buildDir, 'bundlor-properties')
inputs.file project.rootProject.file('gradle.properties')
outputs.dir ext.outputDir
from project.rootProject.file('gradle.properties')
into ext.outputDir
filter(ReplaceTokens, tokens: [
'VIRGO.VERSION': version,
])
}
task('mergeClassesAndResources', type: Copy, dependsOn: 'compileJava') {
ext.bundlorInputPath = new File(buildDir, 'bundlor-inputPath')
inputs.file sourceSets.main.output.classesDir
inputs.file sourceSets.main.resources
outputs.dir ext.bundlorInputPath
from sourceSets.main.output.classesDir
from sourceSets.main.resources
into ext.bundlorInputPath
}
project.tasks.'bundlor'.dependsOn('addProjectVersionToGradlePropertiesTask', 'mergeClassesAndResources')
bundlor {
ext.bundlorInputPath = new File(buildDir, 'bundlor-inputPath')
project.tasks['bundlor'].inputs.file ext.bundlorInputPath
manifestTemplatePath = "template.mf"
propertiesPath = new File("${project.buildDir}/bundlor-properties/gradle.properties")
inputPath = ext.bundlorInputPath
failOnWarnings = false
}
}
configure(wabProjects) {
apply plugin: 'war'
war.dependsOn('bundlor')
war {
extension = 'jar'
rootSpec.exclude("**/*.jar")
manifest = project.manifest { from 'build/bundlor/META-INF/MANIFEST.MF' }
}
}
configure(aspectjProjects) {
configurations.compile.dependencies.each { dep ->
if(dep.hasProperty("dependencyProject")) {
println "dependent project: ${dep}"
iajcClasspath += ":" + dep.dependencyProject.buildDir + "/bundles/release/classes.jar"
} else {
println "other dependency: ${dep}"
}
}
configurations {
ajtools {
transitive = false
description = "AspectJ tools runtime"
}
aspectpath {
transitive = false
description = "Aspects are applied to types present in the project"
}
testAspectpath {
transitive = false
description = "Aspects are applied to tests present in the project"
}
}
dependencies {
compile "org.aspectj:aspectjrt:${project.aspectjVersion}"
ajtools "org.aspectj:aspectjtools:${project.aspectjVersion}"
}
apply plugin: aspectj.AspectJPlugin
// Add nature and buildCommand
eclipse.project {
natures 'org.eclipse.ajdt.ui.ajnature'
buildCommand 'org.eclipse.ajdt.core.ajbuilder'
}
eclipse {
classpath {
file {
withXml { xmlProvider ->
def classpath = xmlProvider.asNode()
def xmlparser = new XmlParser()
configurations.aspectpath.dependencies.each { dep ->
if(dep.hasProperty("dependencyProject")) {
println "Name of project containing aspects to weave: " + dep.dependencyProject.name
classpath.children().findAll{ it['@path'] == '/' + dep.dependencyProject.name }.each {
println "Adding ${it['@path']} to Aspect Path"
def attrs = xmlparser.createNode(it, 'attributes', [:])
xmlparser.createNode(attrs, 'attribute', [name: 'org.eclipse.ajdt.aspectpath', value: 'org.eclipse.ajdt.aspectpath']);
}
}
}
}
}
}
}
}
configure(testUtils) {
dependencies {
// changing junit dependency to configuration compile - this is a test util project based on JUnit :)
compile group: 'junit', name: 'junit', version: junitVersion
}
}
configure(integrationTestProjects) {
dependencies {
// OSGi runtime
testRuntime group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: equinoxVersion, configuration: "compile", ext: "jar"
testCompile group: "org.eclipse.virgo.mirrored", name: "javax.inject", version: javaxInjectVersion, configuration: "compile", ext: "jar"
// PaxExam
testRuntime group: "org.slf4j", name: "slf4j-api", version: slf4jVersion
testCompile group: "org.ops4j.pax.exam", name:"pax-exam-junit4", version: paxExamJunit4Version
testRuntime group: "org.ops4j.pax.exam", name: "pax-exam-container-native", version: paxExamContainerNativeVersion
testRuntime group: "org.ops4j.pax.exam", name: "pax-exam-link-mvn", version: paxExamLinkMvnVersion
testRuntime group: "org.ops4j.pax.url", name: "pax-url-aether", version: paxUrlAetherVersion
testRuntime group: "org.ops4j.pax.url", name: "pax-url-aether", version: paxUrlAetherVersion
testRuntime group: "org.ops4j.pax.url", name: "pax-url-wrap", version: paxUrlWrapVersion
}
}
configure(smokeTestProjects) {
sourceSets {
smokeTest {
java.srcDir file('src/smokeTest/java')
resources.srcDir file('src/smokeTest/resources')
}
}
task smokeTest(type: Test) {
testClassesDir = sourceSets.smokeTest.output.classesDir
classpath = sourceSets.smokeTest.runtimeClasspath
}
dependencies {
testCompile project(':test:org.eclipse.virgo.test.tools')
testCompile project(':util:org.eclipse.virgo.util.io')
testRuntime group: "org.apache.httpcomponents", name: "httpcore", version: httpcomponentsCoreVersion
testRuntime group: "org.apache.httpcomponents", name: "httpclient", version: httpcomponentsClientVersion
smokeTestCompile sourceSets.main.output
smokeTestCompile configurations.testCompile
smokeTestCompile sourceSets.test.output
smokeTestRuntime configurations.testRuntime
}
}
task wrapper(type: Wrapper) { gradleVersion = '3.1' } // CQ 11992