blob: 4f6195f769722332ccd3b4d6dc5dcd3c7a3f6277 [file] [log] [blame]
import org.apache.tools.ant.filters.ReplaceTokens
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.8.0.D-' + timestamp
} else {
version = '3.8.0.SNAPSHOT'
}
}
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.8'
targetCompatibility = '1.8'
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: ecjVersion
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.8
targetCompatibility = 1.8
}
}
}
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) {
description 'Creates a local Gradle Wrapper'
group = 'Build Setup'
gradleVersion = '3.5' // CQ 13634
}