1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-27 00:38:11 -07:00

Initial work for the OSGI plug-in.

This commit is contained in:
Cedric Beust 2016-04-04 05:19:25 -08:00
parent 7b068bb111
commit 9d2d536fe6
2 changed files with 26 additions and 1 deletions

View file

@ -135,7 +135,10 @@ val kobaltApp = project(kobaltPluginApi, wrapper) {
"com.google.code.findbugs:jsr305:3.0.1", "com.google.code.findbugs:jsr305:3.0.1",
"com.google.code.gson:gson:${Versions.gson}", "com.google.code.gson:gson:${Versions.gson}",
"com.squareup.okhttp3:okhttp:${Versions.okhttp}", "com.squareup.okhttp3:okhttp:${Versions.okhttp}",
"org.codehaus.plexus:plexus-utils:3.0.22") "org.codehaus.plexus:plexus-utils:3.0.22",
"biz.aQute.bnd:bndlib:2.4.0"
)
} }

View file

@ -1,5 +1,6 @@
package com.beust.kobalt.plugin.packaging package com.beust.kobalt.plugin.packaging
import aQute.bnd.osgi.Analyzer
import com.beust.kobalt.* import com.beust.kobalt.*
import com.beust.kobalt.api.* import com.beust.kobalt.api.*
import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.api.annotation.Directive
@ -107,6 +108,27 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana
packages.add(p) packages.add(p)
} }
// @Task(name = "generateOsgiManifest", alwaysRunAfter = arrayOf(TASK_ASSEMBLE))
fun generateManifest(project: Project): TaskResult {
val analyzer = Analyzer().apply {
jar = aQute.bnd.osgi.Jar(project.projectProperties.get(Archives.JAR_NAME) as String)
val dependencies = project.compileDependencies + project.compileRuntimeDependencies
val dependentProjects = project.dependentProjects
dependencyManager.calculateDependencies(project, context, dependentProjects, dependencies).forEach {
addClasspath(it.jarFile.get())
}
setProperty(Analyzer.BUNDLE_VERSION, project.version)
setProperty(Analyzer.BUNDLE_NAME, project.group)
setProperty(Analyzer.BUNDLE_DESCRIPTION, project.description)
setProperty(Analyzer.IMPORT_PACKAGE, "*")
setProperty(Analyzer.EXPORT_PACKAGE, "*;-noimport:=false;version=" + project.version)
}
val manifest = analyzer.calcManifest()
manifest.write(System.out)
return TaskResult()
}
@Task(name = PackagingPlugin.TASK_INSTALL, description = "Install the artifacts", @Task(name = PackagingPlugin.TASK_INSTALL, description = "Install the artifacts",
runAfter = arrayOf(PackagingPlugin.TASK_ASSEMBLE)) runAfter = arrayOf(PackagingPlugin.TASK_ASSEMBLE))