def packageConfiguration(configurationName, configuration, target) {
    println "Copy the ${configurationName} artifacts:"
    configuration.each { File file -> println file.name }
    println "to '${target}'."
    copy {
        from configuration into target
        // TODO - gradle-build remove backward compatibility? Why an underscore?
        // replace first hyphen with underscore
        rename(/(.+?)-(.+)/, '$1_$2')
    }
}

configure([
        project(':packaging:nano'),
        project(':packaging:kernel'),
        project(':packaging:tomcat-server'),
]) {
    dependencies {
        // TODO - rename to virgoLib, virgoLibPersistence, virgoLibEndorsed and virgoPickup?!
        nanoLib project(':kernel:org.eclipse.virgo.kernel.equinox.extensions')
        nanoLib project(':nano:org.eclipse.virgo.nano.authentication')
        nanoLib project(':nano:org.eclipse.virgo.nano.shutdown')
        nanoLib project(':util:org.eclipse.virgo.util.env')
        nanoLib group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.launcher", version: equinoxLauncherVersion, configuration: "compile", ext: "jar"

        nanoLibPersistence project(':web:org.eclipse.virgo.web.enterprise.openejb.jpa.integration')

        nanoLibEndorsed group: "org.eclipse.virgo.mirrored", name: "javax.annotation", version: javaxAnnotationVersion, configuration: "compile", ext: "jar"
        nanoLibEndorsed group: "javax.interceptor", name: "javax.interceptor-api", version: javaxInterceptorVersion
        nanoLibEndorsed group: "javax.transaction", name: "javax.transaction-api", version: javaxTransactionVersion

        nanoPickup project(':kernel:org.eclipse.virgo.management.console')
    }
}

project(':packaging:nano') { dependencies {} }

if (System.properties['skip.smoke.tests'] != 'true') {
    project(':packaging:nano:org.eclipse.virgo.nano.smoketest') { dependencies {} }
}

configure([
        project(':packaging:kernel'),
        project(':packaging:tomcat-server'),
]) {
    dependencies {
        kernelPluginsExtras project(':kernel:org.eclipse.virgo.kernel.userregion')

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi.services", version: osgiServicesVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "osgi.enterprise", version: osgiEnterpriseVersion, configuration: "compile", ext: "jar"
        // contains org.osgi.jmx

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.ds", version: equinoxDsVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.util", version: equinoxUtilVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.region", version: equinoxRegionVersion, configuration: "compile", ext: "jar"

        repositoryExt files("../../3rd-party/build/plugins/oevm.aopalliance.aopalliance_${aopallianceVersion}.jar")
        repositoryExt 'commons-codec:commons-codec'
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.aop_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.beans_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.context_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.core_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.expression_${springframeworkVersion}.jar")

        repositoryExt files("../../3rd-party/build/plugins/oevm.com.squareup.okio_${okioVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.com.squareup.okhttp3_${okhttp3Version}.jar")

        repositoryExt group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-io", version: geminiBlueprintVersion, ext: "jar"
        repositoryExt group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-core", version: geminiBlueprintVersion, ext: "jar"
        repositoryExt group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-extender", version: geminiBlueprintVersion, ext: "jar"
        repositoryExt group: "org.eclipse.gemini.blueprint", name: "gemini-blueprint-extensions", version: geminiBlueprintVersion, ext: "jar"

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.gemini.management", version: geminiManagementVersion, configuration: "compile", ext: "jar"
        repositoryExt project(':kernel:org.eclipse.virgo.management.fragment')

        repositoryExt project(':kernel:org.eclipse.virgo.kernel.agent.dm')
        repositoryExt project(':kernel:org.eclipse.virgo.kernel.deployer.dm')
        repositoryExt project(':kernel:org.eclipse.virgo.kernel.dmfragment')

        repositoryExt group: "commons-io", name: "commons-io", version: commonsIoVersion, ext: "jar"
        repositoryExt group: "commons-fileupload", name: "commons-fileupload", version: commonsFileuploadVersion, ext: "jar"
        repositoryExt group: "org.jolokia", name: "jolokia-osgi", version: jolokiaVersion, ext: "jar"
    }
}

configure([
        project(':packaging:kernel'),
]) { dependencies {} }

configure([
        project(':packaging:tomcat-server'),
]) {
    dependencies {
        repositoryExt project(':medic:org.eclipse.virgo.medic')
        repositoryExt project(':medic:org.eclipse.virgo.medic.core')
        repositoryExt project(':web:org.eclipse.virgo.web.dm')

        // 3rd party dependencies from Spring Framework
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.jms", version: javaxJmsVersion, configuration: "compile", ext: "jar"
        repositoryExt 'javax.servlet:javax.servlet-api'

        // missing Spring Framework dependencies
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.aspects_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.context.support_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.jdbc_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.messaging_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.jms_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.orm_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.oxm_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.tx_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.web_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.webflux_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.webmvc_${springframeworkVersion}.jar")
        repositoryExt files("../../3rd-party/build/plugins/oevm.org.springframework.websocket_${springframeworkVersion}.jar")

        repositoryExt files("../../3rd-party/build/plugins/oevm.org.aspectj.weaver_${aspectjVersion}.jar")

        // TODO - think about removing portlet-api from standard VTS
        repositoryExt 'javax.portlet:portlet-api:3.0.1'

        repositoryExt 'javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api'
        repositoryExt group: "org.glassfish.web", name: "javax.servlet.jsp.jstl", version: javaxServletJspJstlImplVersion

        nanoPickup project(':apps:org.eclipse.virgo.apps.splash')
    }
}

configure([
        project(':packaging:tomcat-server'),
]) {
    dependencies {
        repositoryExt project(':web:org.eclipse.virgo.web.core')
        repositoryExt project(':web:org.eclipse.virgo.web.tomcat.support')
        repositoryExt project(':web:org.eclipse.virgo.web.servlet.adapter')
        repositoryExt project(':web:org.eclipse.virgo.web.spring.integration')

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.annotation", version: javaxAnnotationVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.ejb", version: javaxEjbVersion, configuration: "compile", ext: "jar"
        repositoryExt 'javax.el:javax.el-api'
        repositoryExt group: "com.sun.mail", name: "javax.mail", version: javaxMailVersion
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.persistence", version: javaxPersistenceVersion, configuration: "compile", ext: "jar"

        repositoryExt 'javax.servlet.jsp:javax.servlet.jsp-api'
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.security.auth.message", version: javaxSecurityAuthMessageVersion, configuration: "compile", ext: "jar"

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.xml.rpc", version: javaxXmlRpcVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.websocket", version: javaxWebsocketVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.equinox.event", version: equinoxEventVersion, configuration: "compile", ext: "jar"

        repositoryExt group: "commons-io", name: "commons-io", version: commonsIoVersion, ext: "jar"
        repositoryExt group: "commons-fileupload", name: "commons-fileupload", version: commonsFileuploadVersion, ext: "jar"
        // TODO - Equinox migration - rethink removal of taglibs.standard
//        repositoryExt group: "org.eclipse.virgo.mirrored", name: "oevm.org.apache.taglibs.standard", version: apacheTaglibsStandardVersion, ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi.services", version: osgiServicesVersion, configuration: "compile", ext: "jar"
        repositoryExt 'org.slf4j:slf4j-api'
        repositoryExt 'org.slf4j:jul-to-slf4j'
        repositoryExt 'org.slf4j:jcl-over-slf4j'
        repositoryExt 'org.slf4j:log4j-over-slf4j'
        repositoryExt 'org.slf4j:slf4j-nop'
        repositoryExt 'ch.qos.logback:logback-core'
        repositoryExt 'ch.qos.logback:logback-classic'

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.eclipse.jdt.core.compiler.batch", version: eclipseJdtCoreCompilerBatchVersion, configuration: "compile", ext: "jar"

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "javax.websocket", version: javaxWebsocketVersion, configuration: "compile", ext: "jar"

        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.catalina", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.catalina.ha", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.catalina.tribes", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.coyote", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.el", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.jasper", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.juli", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.api", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.util", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.util.scan", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.jni", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.virgo.mirrored", name: "org.apache.tomcat.websocket", version: apacheCatalinaVersion, configuration: "compile", ext: "jar"

        repositoryExt group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.core", version: geminiWebVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.tomcat", version: geminiWebVersion, configuration: "compile", ext: "jar"
        repositoryExt group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.jaspic.fragment", version: geminiWebVersion, configuration: "compile", ext: "jar"

        // TODO - gradle-build build :apps:repository.par
        //        <dependency org="org.eclipse.virgo.apps" name="org.eclipse.virgo.apps.repository" rev="${org.eclipse.virgo.apps}" conf="pickup->runtime"/>
        //        nanoPickup project(':apps:org.eclipse.virgo.apps.repository')
    }
}
