blob: ea15ab864d2e462e1f7bb3989039ec31e4d08d93 [file] [log] [blame]
import org.apache.tools.ant.filters.ReplaceTokens
import static virgobuild.VirgoToolsPlugin.DOWNLOAD_VIRGO_BUILD_TOOLS_TASK_NAME
import static virgobuild.VirgoToolsPlugin.installProduct
import static virgobuild.VirgoToolsPlugin.publishProduct
import static virgobuild.VirgoToolsPlugin.mirrorP2UpdateSite
import virgobuild.Config
apply plugin: 'distribution'
distributions {
main {
baseName = 'virgo-jetty-server'
contents {
exclude ( '**/placeholder' )
from ( 'src/main/filtered' ) {
include ( '**/*.properties' )
include ( '**/.version' )
filter(ReplaceTokens, tokens: tokenMap) // tokens are used in e.g. oev.kernel.userregion.properties
}
from ( 'src/main/filtered' ) {
include ( 'bin/*.sh' )
fileMode 0755
}
from ( "${buildDir}/VJS/jetty-server/" ) { exclude ( 'Eclipse.app' ) }
from ( "${buildDir}/common_resources/" )
}
}
}
task ('assembleJettyServer', dependsOn: [
'installProductJettyServer',
'packageResourcesAndProducts'
]) {
installDist.dependsOn(['assembleJettyServer'])
distZip.dependsOn(['assembleJettyServer'])
}
task ('packageResourcesAndProducts') {
doLast {
packageConfiguration('lib', configurations.nanoLib, file("${buildDir}/common_resources/lib/"))
packageConfiguration('libPersistence', configurations.nanoLibPersistence, file("${buildDir}/common_resources/lib/persistence/"))
packageConfiguration('libEndorsed', configurations.nanoLibEndorsed, file("${buildDir}/common_resources/lib/endorsed/"))
packageConfiguration('pluginsExtras', configurations.kernelPluginsExtras, file("${buildDir}/common_resources/plugins/"))
packageConfiguration('repositoryExt', configurations.repositoryExt, file("${buildDir}/common_resources/repository/ext/"))
packageConfiguration('pickup', configurations.nanoPickup, file("${buildDir}/common_resources/pickup/"))
}
}
task ('publishJettyServer', dependsOn: [
':org.eclipse.virgo.site:publishBase',
':org.eclipse.virgo.site:publishKernelBase',
]) {
description = "Publishes a product to a p2 repository. The publishing uses ANY environment configurations."
def product = 'jetty-server'
def productFileLocation = file("${projectDir}/publish_resources/products/${product}/${product}.product")
def javaProfileLocation = file("${projectDir}/src/main/dist/configuration/java7-server.profile")
doLast() { publishProduct(project, productFileLocation, javaProfileLocation) }
}
task ('mirrorJettyResources', dependsOn: ['publishJettyServer',]) {
description = "Mirrors a P2 repository."
def source = "http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/${jettyVersion}"
// def source = "http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/8.1.4.v20120524/" - ok
// def source = "http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/8.1.5.v20120716/" - ok
// def source = "http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/8.1.6.v20120903/" - failed
// def source = "http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/8.1.14.v20131031/" - failed (subset used by Virgo RAP Server)
File destinationDir = file("${buildDir}/jetty-mirror")
doLast() {
mirrorP2UpdateSite(project, source, destinationDir)
}
}
task ('copyJettyResources', dependsOn: ['mirrorJettyResources',]) {
description = "Copies Jetty resources from a P2 repository into repository/ext."
File jettyMirrorDir = file("${buildDir}/jetty-mirror")
doLast() {
// copy jetty bundles to repository/ext (this directory is *not* handled by p2)
project.copy {
from "${buildDir}/jetty-mirror/plugins"
into "${buildDir}/common_resources/repository/ext"
include '*.jar'
exclude { details ->
(details.file.name.contains('.source_')
|| details.file.name.contains('javax.security.auth.message')
|| details.file.name.contains('org.eclipse.jetty.jaspi')
|| details.file.name.contains('org.eclipse.jetty.monitor')
|| details.file.name.contains('org.eclipse.jetty.nested')
|| details.file.name.contains('org.eclipse.jetty.nosql')
|| details.file.name.contains('org.eclipse.jetty.osgi.boot.warurl')
|| details.file.name.contains('org.eclipse.jetty.osgi.httpservice'))
}
}
}
}
task ('installProductJettyServer', dependsOn: [
'publishJettyServer',
'copyJettyResources'
]) {
description = "Installs a Virgo product to a desired destination. Default profile(roaming) is VIRGOProfile, the environment cofigurations are ANY."
def product = 'jetty-server'
def shortProduct = 'VJS'
def destinationDir = file("${buildDir}/${shortProduct}/${product}")
def productIu = "${product}.product"
doLast() { installProduct(project, productIu, destinationDir) }
}