├── .gitignore ├── README.textile └── project ├── build.properties ├── build └── Project.scala └── plugins ├── Plugins.scala └── project └── build.properties /.gitignore: -------------------------------------------------------------------------------- 1 | # SBT 2 | target 3 | lib_managed 4 | src_managed 5 | boot 6 | 7 | # Maven 8 | target 9 | 10 | # Mac 11 | .DS_Store 12 | 13 | # Eclipse 14 | .classpath 15 | .launch 16 | .metadata 17 | .project 18 | .scala_dependencies 19 | .settings 20 | 21 | # IntelliJ 22 | .idea 23 | *.iml 24 | *.ipr 25 | *.iws 26 | 27 | # Pax Runner 28 | runner 29 | -------------------------------------------------------------------------------- /README.textile: -------------------------------------------------------------------------------- 1 | scala-lang-osgi offers "OSGi":http://www.osgi.org bundles for "Scala":http://www.scala-lang.org/. Currently _scala-library_ and _scala-compiler_ are available as OSGi bundles, but _scala-swing_ and _scala-dbc_ will follow if needed. Just let us know! 2 | 3 | scala-lang-osgi is open source software licensed under the "SCALA LICENSE":http://www.scala-lang.org/node/146. 4 | 5 | h2. Getting scala-lang-osgi 6 | 7 | The binaries are made available in the "Scala-Tools.org Maven repository":http://scala-tools.org/repo-releases/com/weiglewilczek/scala-lang-osgi/. 8 | 9 | h3. For SBT 10 | 11 |
val scalaLibraryOSGi = "com.weiglewilczek.scala-lang-osgi" % "scala-library" % "2.9.1"
12 | val scalaCompilerOSGi = "com.weiglewilczek.scala-lang-osgi" % "scala-compiler" % "2.9.1"
13 |
14 |
15 | h3. For Maven
16 |
17 |
18 | com.weiglewilczek.scala-lang-osgi
19 | scala-library
20 | 2.9.1
21 |
22 |
--------------------------------------------------------------------------------
/project/build.properties:
--------------------------------------------------------------------------------
1 | #Project properties
2 | #Mon Mar 28 08:32:24 CEST 2011
3 | project.organization=com.weiglewilczek.scala-lang-osgi
4 | project.name=scala-lang-osgi-parent
5 | sbt.version=0.7.7
6 | project.version=2.9.1
7 | build.scala.versions=2.9.1
8 | project.initialize=false
9 |
--------------------------------------------------------------------------------
/project/build/Project.scala:
--------------------------------------------------------------------------------
1 | import com.weiglewilczek.bnd4sbt._
2 | import sbt._
3 |
4 | /** scala-lang-osgi parent project */
5 | class ScalaLangOsgiParentProject(info: ProjectInfo) extends ParentProject(info) {
6 |
7 | // Subprojects
8 | lazy val scalaLibraryProject = project("scala-library", "scala-library", new ScalaLibraryProject(_))
9 | lazy val scalaCompilerProject = project("scala-compiler", "scala-compiler", new ScalaCompilerProject(_))
10 |
11 | // Publishing
12 | override def managedStyle = ManagedStyle.Maven
13 | override def deliverAction = super.deliverAction dependsOn(publishLocal) // Fix for issue 99!
14 | Credentials(Path.userHome / ".ivy2" / ".credentials", log)
15 | lazy val publishTo = "Scala Tools Nexus" at "http://nexus.scala-tools.org/content/repositories/releases/"
16 | // lazy val publishTo = Resolver.file("Local Test Repository", Path fileProperty "java.io.tmpdir" asFile)
17 |
18 | /** scala-library subproject */
19 | class ScalaLibraryProject(info: ProjectInfo) extends ScalaLangOsgiBaseProject(info) {
20 | override lazy val bndExportPackage =
21 | "scala.*;version=%s".format(projectVersion.value) ::
22 | Nil
23 | override lazy val bndImportPackage =
24 | "sun.*;resolution:=optional" ::
25 | "*" ::
26 | Nil
27 | override lazy val bndDynamicImportPackage =
28 | "*" ::
29 | Nil
30 | override lazy val bndNoUses = true
31 | override lazy val bndClasspath = Path fromFile buildScalaInstance.libraryJar
32 | override lazy val bndOutput = super.bndOutput // Make it visible for ScalaCompilerProject!
33 | }
34 |
35 | /** scala-compiler subproject */
36 | class ScalaCompilerProject(info: ProjectInfo) extends ScalaLangOsgiBaseProject(info) {
37 | override lazy val bndExportPackage =
38 | "scala.tools.nsc.*;version=%s".format(projectVersion.value) ::
39 | Nil
40 | override lazy val bndImportPackage =
41 | "sun.*;resolution:=optional" ::
42 | "jline.*;resolution:=optional" ::
43 | "org.apache.tools.ant.*;resolution:=optional" ::
44 | "*" ::
45 | Nil
46 | override lazy val bndDynamicImportPackage =
47 | "*" ::
48 | Nil
49 | override lazy val bndRequireBundle =
50 | "%s;bundle-version=%s".format(scalaLibraryProject.bndBundleSymbolicName, projectVersion.value) ::
51 | Nil
52 | override lazy val bndClasspath = (Path fromFile buildScalaInstance.compilerJar) +++ scalaLibraryProject.bndOutput
53 | }
54 | }
55 |
56 | /** Base subproject with common settings for scala-lang-osgi. */
57 | abstract class ScalaLangOsgiBaseProject(info: ProjectInfo) extends DefaultProject(info) with BNDPlugin {
58 |
59 | override lazy val moduleID = normalizedName // We don't need the crossScalaVersionString!
60 | override def managedStyle = ManagedStyle.Maven
61 |
62 | override lazy val bndBundleSymbolicName = normalizedName
63 | override lazy val bndBundleName = "OSGi-fied %s" format bndBundleSymbolicName
64 | override lazy val bndExecutionEnvironment = Set(ExecutionEnvironment.Java5, ExecutionEnvironment.Java6)
65 | override lazy val bndBundleVendor = Some("Weigle Wilczek GmbH")
66 | override lazy val bndBundleLicense = Some("SCALA LICENSE (http://www.scala-lang.org/node/146)")
67 | override lazy val bndVersionPolicy = Some("[$(@),$(@)]")
68 | }
69 |
--------------------------------------------------------------------------------
/project/plugins/Plugins.scala:
--------------------------------------------------------------------------------
1 | import sbt._
2 |
3 | class Plugins(info: ProjectInfo) extends PluginDefinition(info) {
4 |
5 | // Dependencies
6 | lazy val bnd4sbt = "com.weiglewilczek.bnd4sbt" % "bnd4sbt" % "1.0.2"
7 | }
8 |
--------------------------------------------------------------------------------
/project/plugins/project/build.properties:
--------------------------------------------------------------------------------
1 | #Project properties
2 | #Fri May 13 10:35:33 CEST 2011
3 | plugin.uptodate=true
4 |
--------------------------------------------------------------------------------