From 75dc8474b76d1c8f141b293f5da6b6b2f0eba590 Mon Sep 17 00:00:00 2001 From: Andreas Kollegger Date: Sun, 6 Jun 2010 14:33:10 -0400 Subject: [PATCH 1/4] initial changes for OSGification: added bnd4sbt plugin, changed artifact naming to include _osgi --- project/build/AkkaProject.scala | 42 ++++++++++++++++++++------------ project/build/lib/bnd4sbt.jar | Bin 0 -> 8092 bytes project/plugins/Plugins.scala | 3 ++- 3 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 project/build/lib/bnd4sbt.jar diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 4ad4858d09..3aa43b196d 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -10,6 +10,8 @@ import java.util.jar.Attributes import java.util.jar.Attributes.Name._ import java.io.File +import com.weiglewilczek.bnd4sbt._ + class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { // ------------------------------------------------------------ @@ -25,6 +27,8 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { lazy val deployPath = info.projectPath / "deploy" lazy val distPath = info.projectPath / "dist" + val artifactQualifier = buildScalaVersion + "_osgi" + override def compileOptions = super.compileOptions ++ Seq("-deprecation", "-Xmigration", @@ -36,7 +40,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { override def javaCompileOptions = JavaCompileOption("-Xlint:unchecked") :: super.javaCompileOptions.toList - def distName = "%s_%s-%s.zip".format(name, buildScalaVersion, version) + def distName = "%s_%s-%s.zip".format(name, artifactQualifier, version) lazy val dist = zipTask(allArtifacts, "dist", distName) dependsOn (`package`) describedAs("Zips up the distribution.") @@ -109,20 +113,20 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { override def manifestClassPath = Some(allArtifacts.getFiles .filter(_.getName.endsWith(".jar")) .filter(!_.getName.contains("scala-library")) - .map("lib_managed/scala_%s/compile/".format(buildScalaVersion) + _.getName) + .map("lib_managed/scala_%s/compile/".format(artifactQualifier) + _.getName) .mkString(" ") + " scala-library.jar" + - " dist/akka-core_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-http_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-camel_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-amqp_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-persistence-common_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-persistence-redis_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-persistence-mongo_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-persistence-cassandra_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-kernel_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-spring_%s-%s.jar".format(buildScalaVersion, version) + - " dist/akka-jta_%s-%s.jar".format(buildScalaVersion, version) + " dist/akka-core_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-http_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-camel_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-amqp_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-persistence-common_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-persistence-redis_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-persistence-mongo_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-persistence-cassandra_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-kernel_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-spring_%s-%s.jar".format(artifactQualifier, version) + + " dist/akka-jta_%s-%s.jar".format(artifactQualifier, version) ) //Exclude slf4j1.5.11 from the classpath, it's conflicting... @@ -398,12 +402,14 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { } def akkaArtifacts = { - descendents(info.projectPath / "dist", "*" + buildScalaVersion + "-" + version + ".jar") + descendents(info.projectPath / "dist", "*" + artifactQualifier + "-" + version + ".jar") } // ------------------------------------------------------------ - class AkkaDefaultProject(info: ProjectInfo, val deployPath: Path) extends DefaultProject(info) with DeployProject + class AkkaDefaultProject(info: ProjectInfo, val deployPath: Path) extends DefaultProject(info) with DeployProject with OSGiProject + + trait DeployProject extends DefaultProject { // defines where the deployTask copies jars to @@ -424,4 +430,10 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { FileUtilities.copyFile(jar, toDir / jar.name, log) } else None } + + trait OSGiProject extends DefaultProject with BNDPlugin { + override def bndExportPackage = Set("*") + } + + } diff --git a/project/build/lib/bnd4sbt.jar b/project/build/lib/bnd4sbt.jar new file mode 100644 index 0000000000000000000000000000000000000000..5906b493003a67283602179ffdf24d15acdeb0b4 GIT binary patch literal 8092 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 Date: Sun, 6 Jun 2010 20:05:26 -0400 Subject: [PATCH 2/4] initial implementation of OSGiWrapperProject, applied to jgroups dependency to make it OSGi-friendly --- .../src/main/resources/features.xml | 7 +++ project/build/AkkaProject.scala | 51 +++++++++++++++++- project/plugins/.Plugins.scala.swp | Bin 12288 -> 0 bytes 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 akka-karaf/akka-features/src/main/resources/features.xml delete mode 100644 project/plugins/.Plugins.scala.swp diff --git a/akka-karaf/akka-features/src/main/resources/features.xml b/akka-karaf/akka-features/src/main/resources/features.xml new file mode 100644 index 0000000000..9176437f46 --- /dev/null +++ b/akka-karaf/akka-features/src/main/resources/features.xml @@ -0,0 +1,7 @@ + + + + mvn:se.scalablesolutions.akka.akka-wrap/jgroups-wrapper_2.8.0.RC3_osgi/2.9.0.GA + mvn:se.scalablesolutions.akka/akka-core_2.8.0.RC3_osgi/0.9 + + diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 47559ad865..2b96abb597 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -86,6 +86,9 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { // examples lazy val akka_samples = project("akka-samples", "akka-samples", new AkkaSamplesParentProject(_)) + // OSGi wrappers + lazy val akka_wrappers = project("akka-wrap", "akka-wrap", new AkkaWrappersParentProject(_)) + // ------------------------------------------------------------ // Run Akka microkernel using 'sbt run' + use for packaging executable JAR override def mainClass = Some("se.scalablesolutions.akka.kernel.Main") @@ -169,9 +172,28 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { " -Dpackaging=jar -DgeneratePom=true" command ! log } - None + None } dependsOn(dist) describedAs("Run mvn install for artifacts in dist.") + lazy val publishLocalMvnWrapped = runMvnInstallWrapped + def runMvnInstallWrapped = task { + for (absPath <- wrappedArtifacts.getPaths) { + val artifactRE = """.*/([^/]+)-([^-]+).jar""".r + val artifactRE(artifactId, artifactVersion) = absPath + val command = "mvn install:install-file" + + " -Dfile=" + absPath + + " -DgroupId=se.scalablesolutions.akka.akka-wrap" + + " -DartifactId=" + artifactId + + " -Dversion=" + artifactVersion + + " -Dpackaging=jar -DgeneratePom=true" + command ! log + } + None + } dependsOn(`package`) describedAs("Run mvn install for wrapped artifacts in akka-wrap.") + + + + // ------------------------------------------------------------ // subprojects class AkkaCoreProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) { @@ -362,6 +384,23 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { new AkkaSampleRemoteProject(_), akka_kernel) } + + // ================= OSGi Wrappers ================== + class JgroupsWrapperProject(info: ProjectInfo) extends OSGiWrapperProject(info) { + override def wrappedVersion = "2.9.0.GA" + override def bndImportPackage = Set("org.testng.*;resolution:=optional", + "org.bouncycastle.jce.provider;resolution:=optional", + "bsh;resolution:=optional", + "*") + + val jgroups = "jgroups" % "jgroups" % wrappedVersion % "compile" + } + + class AkkaWrappersParentProject(info: ProjectInfo) extends ParentProject(info) { + lazy val jgroups_wrapper = project("jgroups-wrapper", "jgroups-wrapper", + new JgroupsWrapperProject(_)) + } + // ------------------------------------------------------------ // helper functions def removeDupEntries(paths: PathFinder) = @@ -390,6 +429,8 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { def akkaArtifacts = descendents(info.projectPath / "dist", "*" + buildScalaVersion + "_osgi-" + version + ".jar") + def wrappedArtifacts = descendents(info.projectPath / "akka-wrap", "*" + buildScalaVersion + "_osgi-" + "*.jar") + // ------------------------------------------------------------ class AkkaDefaultProject(info: ProjectInfo, val deployPath: Path) extends DefaultProject(info) with DeployProject with OSGiProject @@ -419,5 +460,13 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { } + abstract class OSGiWrapperProject(info: ProjectInfo) extends DefaultProject(info) with BNDPlugin { + def wrappedVersion:String + override def version = OpaqueVersion(wrappedVersion) + override def artifactID = moduleID + "_osgi" + override def bndEmbedDependencies = true + override def bndExportPackage = Set("*") + } + } diff --git a/project/plugins/.Plugins.scala.swp b/project/plugins/.Plugins.scala.swp deleted file mode 100644 index 39709506fa92639a4034a394fdcff22edf268002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmYc?2=nw+FxN9;U|?VnU|?{5&Fv#s_Kdkeijg5PJ3l8UH9bAG2qcLcyCs&CRO3s$Q}1xG_*Gz5@CptK}S*MgV9*vQa8SxHerSSS=( zc9cCD0;3@?8UmvsFd71*Aut*OqaiRF0;3@?0z#mqfRW)p0|NsS0|Nsm0|Nsi6psL} zk9u)51V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qOb8^VFffSoF);Y^LFWHK zV*sD|85lnCGcau6XJAO=XJC-!XJEL-$H36d$G{K>RV&BGz#zuQz`)7Jz`z00J7Pj? z)T5&zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Auz;4pq9Z70u+oal3*MdZ3hxGHAzV{ zPqR!iGq$uyOR-EeO*A$)u`n<*F*Zz0GO;u_H8nM>Wl&HkOUzM7%1bdRPAXBbRZvRK z&($kW%}mcpEzitJu1d{TQczV;f+_&B4fITu6ciZr^&xsQQ&JOQ8q+gNGD?&5atl&( zO7ink^T6thlS*_!igY3C!NFn%dWO2eevSdb9{wRpaHEP+3-UomxqIjqB&MepD}V%) z6cS4mlrl<63as??;U?=rtxC?%)z3{VOU=_)g8HSnASE>z;+N85y^_@AjJ(X`#GIT; zJ&+98b`V1s Date: Tue, 8 Jun 2010 22:57:55 -0400 Subject: [PATCH 3/4] pulled wrappers into AkkaWrapperProject trait file; sjson, objenesis, dispatch-json, netty ok; multiverse is next --- .../src/main/resources/features.xml | 15 ++++ project/build/AkkaProject.scala | 52 +----------- project/build/AkkaWrappersProject.scala | 81 +++++++++++++++++++ 3 files changed, 97 insertions(+), 51 deletions(-) create mode 100644 project/build/AkkaWrappersProject.scala diff --git a/akka-karaf/akka-features/src/main/resources/features.xml b/akka-karaf/akka-features/src/main/resources/features.xml index 9176437f46..7506820024 100644 --- a/akka-karaf/akka-features/src/main/resources/features.xml +++ b/akka-karaf/akka-features/src/main/resources/features.xml @@ -1,7 +1,22 @@ + + + mvn:com.weiglewilczek.scala-lang-osgi/scala-library/2.8.0.RC2 + mvn:org.eclipse.scalamodules/scalamodules-core/2.0-M2 + + + + + mvn:se.scalablesolutions.akka.akka-wrap/dispatch-json_2.8.0.RC3_osgi/0.7.4 + mvn:org.objenesis/objenesis/1.2 + mvn:sjson.json/sjson/0.6-SNAPSHOT + + + sjson mvn:se.scalablesolutions.akka.akka-wrap/jgroups-wrapper_2.8.0.RC3_osgi/2.9.0.GA + mvn:org.jboss.netty/netty/3.2.0.CR1 mvn:se.scalablesolutions.akka/akka-core_2.8.0.RC3_osgi/0.9 diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 2b96abb597..90e9a3124e 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -12,7 +12,7 @@ import java.io.File import com.weiglewilczek.bnd4sbt._ -class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { +class AkkaParent(info: ProjectInfo) extends DefaultProject(info) with AkkaWrappersProject { // ------------------------------------------------------------ // project versions @@ -86,9 +86,6 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { // examples lazy val akka_samples = project("akka-samples", "akka-samples", new AkkaSamplesParentProject(_)) - // OSGi wrappers - lazy val akka_wrappers = project("akka-wrap", "akka-wrap", new AkkaWrappersParentProject(_)) - // ------------------------------------------------------------ // Run Akka microkernel using 'sbt run' + use for packaging executable JAR override def mainClass = Some("se.scalablesolutions.akka.kernel.Main") @@ -175,25 +172,6 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { None } dependsOn(dist) describedAs("Run mvn install for artifacts in dist.") - lazy val publishLocalMvnWrapped = runMvnInstallWrapped - def runMvnInstallWrapped = task { - for (absPath <- wrappedArtifacts.getPaths) { - val artifactRE = """.*/([^/]+)-([^-]+).jar""".r - val artifactRE(artifactId, artifactVersion) = absPath - val command = "mvn install:install-file" + - " -Dfile=" + absPath + - " -DgroupId=se.scalablesolutions.akka.akka-wrap" + - " -DartifactId=" + artifactId + - " -Dversion=" + artifactVersion + - " -Dpackaging=jar -DgeneratePom=true" - command ! log - } - None - } dependsOn(`package`) describedAs("Run mvn install for wrapped artifacts in akka-wrap.") - - - - // ------------------------------------------------------------ // subprojects class AkkaCoreProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) { @@ -384,23 +362,6 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { new AkkaSampleRemoteProject(_), akka_kernel) } - - // ================= OSGi Wrappers ================== - class JgroupsWrapperProject(info: ProjectInfo) extends OSGiWrapperProject(info) { - override def wrappedVersion = "2.9.0.GA" - override def bndImportPackage = Set("org.testng.*;resolution:=optional", - "org.bouncycastle.jce.provider;resolution:=optional", - "bsh;resolution:=optional", - "*") - - val jgroups = "jgroups" % "jgroups" % wrappedVersion % "compile" - } - - class AkkaWrappersParentProject(info: ProjectInfo) extends ParentProject(info) { - lazy val jgroups_wrapper = project("jgroups-wrapper", "jgroups-wrapper", - new JgroupsWrapperProject(_)) - } - // ------------------------------------------------------------ // helper functions def removeDupEntries(paths: PathFinder) = @@ -429,8 +390,6 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { def akkaArtifacts = descendents(info.projectPath / "dist", "*" + buildScalaVersion + "_osgi-" + version + ".jar") - def wrappedArtifacts = descendents(info.projectPath / "akka-wrap", "*" + buildScalaVersion + "_osgi-" + "*.jar") - // ------------------------------------------------------------ class AkkaDefaultProject(info: ProjectInfo, val deployPath: Path) extends DefaultProject(info) with DeployProject with OSGiProject @@ -460,13 +419,4 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { } - abstract class OSGiWrapperProject(info: ProjectInfo) extends DefaultProject(info) with BNDPlugin { - def wrappedVersion:String - override def version = OpaqueVersion(wrappedVersion) - override def artifactID = moduleID + "_osgi" - override def bndEmbedDependencies = true - override def bndExportPackage = Set("*") - } - - } diff --git a/project/build/AkkaWrappersProject.scala b/project/build/AkkaWrappersProject.scala new file mode 100644 index 0000000000..5826ee4d55 --- /dev/null +++ b/project/build/AkkaWrappersProject.scala @@ -0,0 +1,81 @@ + /*---------------------------------------------------------------------------\ +| Copyright (C) 2009-2010 Scalable Solutions AB | +\---------------------------------------------------------------------------*/ + +import sbt._ +import sbt.CompileOrder._ +import spde._ + +import java.util.jar.Attributes +import java.util.jar.Attributes.Name._ +import java.io.File + +import com.weiglewilczek.bnd4sbt._ + +trait AkkaWrappersProject extends DefaultProject { + + // ------------------------------------------------------------ + // project versions + val JERSEY_VERSION:String + val ATMO_VERSION:String + val CASSANDRA_VERSION:String + val LIFT_VERSION:String + val SCALATEST_VERSION:String + val MULTIVERSE_VERSION:String + + // OSGi wrappers + lazy val akka_wrappers = project("akka-wrap", "akka-wrap", new AkkaWrappersParentProject(_)) + + import Process._ + lazy val publishLocalMvnWrapped = runMvnInstallWrapped + def runMvnInstallWrapped = task { + for (absPath <- wrappedArtifacts.getPaths) { + val artifactRE = """.*/([^/]+)-([^-]+).jar""".r + val artifactRE(artifactId, artifactVersion) = absPath + val command = "mvn install:install-file" + + " -Dfile=" + absPath + + " -DgroupId=se.scalablesolutions.akka.akka-wrap" + + " -DartifactId=" + artifactId + + " -Dversion=" + artifactVersion + + " -Dpackaging=jar -DgeneratePom=true" + command ! log + } + None + } dependsOn(`package`) describedAs("Run mvn install for wrapped artifacts in akka-wrap.") + + // ================= OSGi Wrappers ================== + class JgroupsWrapperProject(info: ProjectInfo) extends OSGiWrapperProject(info) { + override def wrappedVersion = "2.9.0.GA" + override def bndImportPackage = Set("org.testng.*;resolution:=optional", + "org.bouncycastle.jce.provider;resolution:=optional", + "bsh;resolution:=optional", + "*") + + val jgroups = "jgroups" % "jgroups" % wrappedVersion % "compile" + } + + class DispatchJsonWrapperProject(info: ProjectInfo) extends OSGiWrapperProject(info) { + override def wrappedVersion = "0.7.4" + + val dispatch_json = "net.databinder" % "dispatch-json_2.8.0.RC3" % wrappedVersion % "compile" + } + + class AkkaWrappersParentProject(info: ProjectInfo) extends ParentProject(info) { + lazy val jgroups_wrapper = project("jgroups-wrapper", "jgroups-wrapper", + new JgroupsWrapperProject(_)) + lazy val dispath_json = project("dispatch-json", "dispatch-json", + new DispatchJsonWrapperProject(_)) + } + + def wrappedArtifacts = descendents(info.projectPath / "akka-wrap", "*" + buildScalaVersion + "_osgi-" + "*.jar") + + abstract class OSGiWrapperProject(info: ProjectInfo) extends DefaultProject(info) with BNDPlugin { + def wrappedVersion:String + override def version = OpaqueVersion(wrappedVersion) + override def artifactID = moduleID + "_osgi" + override def bndEmbedDependencies = true + override def bndExportPackage = Set("*") + } + + +} From 3c3d9a4440b7d28ebf288c9f33cb92e354dc96df Mon Sep 17 00:00:00 2001 From: Andreas Kollegger Date: Thu, 17 Jun 2010 12:12:42 -0400 Subject: [PATCH 4/4] synced with jboner/master; decoupled AkkaWrapperProject; bumped bnd4sbt to 1.0.0.RC2 --- project/build/AkkaProject.scala | 9 +++++---- project/build/AkkaWrappersProject.scala | 13 ++++++++++--- project/plugins/Plugins.scala | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 0745dcb08a..ca0da80ee3 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -12,7 +12,7 @@ import java.io.File import com.weiglewilczek.bnd4sbt._ -class AkkaParent(info: ProjectInfo) extends DefaultProject(info) with AkkaWrappersProject { +class AkkaParent(info: ProjectInfo) extends DefaultProject(info) { // ------------------------------------------------------------ // project versions @@ -22,6 +22,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) with AkkaWrappe val LIFT_VERSION = "2.0-scala280-SNAPSHOT" val SCALATEST_VERSION = "1.2-for-scala-2.8.0.RC3-SNAPSHOT" val MULTIVERSE_VERSION = "0.5.2" + val COMMONS_CODEC_VERSION = "1.4" // ------------------------------------------------------------ lazy val deployPath = info.projectPath / "deploy" @@ -243,7 +244,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) with AkkaWrappe class AkkaRedisProject(info: ProjectInfo) extends AkkaDefaultProject(info, distPath) { val redis = "com.redis" % "redisclient" % "2.8.0.RC3-1.4-SNAPSHOT" % "compile" - val commons_codec = "commons-codec" % "commons-codec" % "1.4" % "compile" + val commons_codec = "commons-codec" % "commons-codec" % COMMONS_CODEC_VERSION % "compile" override def testOptions = TestFilter((name: String) => name.endsWith("Test")) :: Nil } @@ -339,7 +340,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) with AkkaWrappe class AkkaSampleSecurityProject(info: ProjectInfo) extends AkkaDefaultProject(info, deployPath) { val jsr311 = "javax.ws.rs" % "jsr311-api" % "1.1.1" % "compile" val jsr250 = "javax.annotation" % "jsr250-api" % "1.0" % "compile" - val commons_codec = "commons-codec" % "commons-codec" % "1.3" % "compile" + val commons_codec = "commons-codec" % "commons-codec" % COMMONS_CODEC_VERSION % "compile" } class AkkaSamplesParentProject(info: ProjectInfo) extends ParentProject(info) { @@ -416,7 +417,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) with AkkaWrappe trait OSGiProject extends DefaultProject with BNDPlugin { override def artifactID = moduleID + "_osgi" - override def bndExportPackage = Set("*") + override def bndExportPackage = Seq("se.scalablesolutions.akka.*;version=0.9") } diff --git a/project/build/AkkaWrappersProject.scala b/project/build/AkkaWrappersProject.scala index 5826ee4d55..f92e91d191 100644 --- a/project/build/AkkaWrappersProject.scala +++ b/project/build/AkkaWrappersProject.scala @@ -46,7 +46,7 @@ trait AkkaWrappersProject extends DefaultProject { // ================= OSGi Wrappers ================== class JgroupsWrapperProject(info: ProjectInfo) extends OSGiWrapperProject(info) { override def wrappedVersion = "2.9.0.GA" - override def bndImportPackage = Set("org.testng.*;resolution:=optional", + override def bndImportPackage = Seq("org.testng.*;resolution:=optional", "org.bouncycastle.jce.provider;resolution:=optional", "bsh;resolution:=optional", "*") @@ -60,11 +60,19 @@ trait AkkaWrappersProject extends DefaultProject { val dispatch_json = "net.databinder" % "dispatch-json_2.8.0.RC3" % wrappedVersion % "compile" } + class MultiverseWrapperProject(info: ProjectInfo) extends OSGiWrapperProject(info) { + override def wrappedVersion = "0.5.2" + + val multiverse = "org.multiverse" % "multiverse-alpha" % wrappedVersion % "compile" + } + class AkkaWrappersParentProject(info: ProjectInfo) extends ParentProject(info) { lazy val jgroups_wrapper = project("jgroups-wrapper", "jgroups-wrapper", new JgroupsWrapperProject(_)) lazy val dispath_json = project("dispatch-json", "dispatch-json", new DispatchJsonWrapperProject(_)) + lazy val multiverse_wrapper = project("multiverse-wrapper", "multiverse-wrapper", + new MultiverseWrapperProject(_)) } def wrappedArtifacts = descendents(info.projectPath / "akka-wrap", "*" + buildScalaVersion + "_osgi-" + "*.jar") @@ -73,8 +81,7 @@ trait AkkaWrappersProject extends DefaultProject { def wrappedVersion:String override def version = OpaqueVersion(wrappedVersion) override def artifactID = moduleID + "_osgi" - override def bndEmbedDependencies = true - override def bndExportPackage = Set("*") + override def bndExportPackage = Seq("*") } diff --git a/project/plugins/Plugins.scala b/project/plugins/Plugins.scala index 997b1e8e67..ac9ff64e25 100644 --- a/project/plugins/Plugins.scala +++ b/project/plugins/Plugins.scala @@ -5,5 +5,5 @@ class Plugins(info: ProjectInfo) extends PluginDefinition(info) { val spdeSbt = "us.technically.spde" % "spde-sbt-plugin" % "0.4.1" // val repo = "GH-pages repo" at "http://mpeltonen.github.com/maven/" // val idea = "com.github.mpeltonen" % "sbt-idea-plugin" % "0.1-SNAPSHOT" - val bnd4sbt = "com.weiglewilczek" % "bnd4sbt" % "0.4" + val bnd4sbt = "com.weiglewilczek.bnd4sbt" % "bnd4sbt" % "1.0.0.RC2" }