`
jilen
  • 浏览: 98331 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用SBT 0.10.x和sbteclipse从akka源代码构建Eclipse工程

阅读更多

   Akka的源代码采用sbt 0.7.7做管理。最新的sbt 0.10.x已经发生了许多变更,为了使用sbteclipse生成Eclipse项目方便查看源代码,今天捣腾了不少时间。

 

  0. 下载akka源代码,解压至硬盘(也可以git clone之)

  1. 备份原有的akka源代码目录下面的project文件夹为project.old。

  2. 创建新的project文件夹

  3. project目录下创建项目配置文件Build.scala和build.properties

  4. 运行sbt reload,update,compile编译项目

  5. sbt eclipse create-src创建eclipse项目

  6. Eclipse中导入akka项目

 

第四部最为复杂,主要是定义仓库,定义依赖和增加sbteclipse插件,

 

build.properties只用来指定sbt版本

 

 

sbt.version=0.10.0

 

 

Build.scala

 

import sbt._

import Keys._

object Settings {
  import Dependencies._
  import Resolvers._

  val buildScalaVersion = "2.9.0-1"

  val buildSettings = Defaults.defaultSettings ++ Seq(
    scalaVersion := buildScalaVersion,
    libraryDependencies := Depns,
    resolvers := Repos)
}

object Resolvers {

  /**
   * repos definition
   */
  lazy val Repos = Seq(
    AkkaRepo,
    CodehausRepo,
    GuiceyFruitRepo,
    JBossRepo,
    JavaNetRepo,
    SonatypeSnapshotRepo,
    GlassfishRepo,
    ScalaToolsRelRepo,
    ScalaToolsSnapshotRepo,
    TypeSafeRepo)

  lazy val AkkaRepo = "Akka Repository" at "http://akka.io/repository"
  lazy val CodehausRepo = "Codehaus Repo" at "http://repository.codehaus.org"
  lazy val GuiceyFruitRepo = "GuiceyFruit Repo" at "http://guiceyfruit.googlecode.com/svn/repo/releases/"
  lazy val JBossRepo = "JBoss Repo" at "http://repository.jboss.org/nexus/content/groups/public/"
  lazy val JavaNetRepo = "java.net Repo" at "http://download.java.net/maven/2"
  lazy val SonatypeSnapshotRepo = "Sonatype OSS Repo" at "http://oss.sonatype.org/content/repositories/releases"
  lazy val GlassfishRepo = "Glassfish Repo" at "http://download.java.net/maven/glassfish"
  lazy val ScalaToolsRelRepo = "Scala Tools Releases Repo" at "http://scala-tools.org/repo-releases"
  lazy val DatabinderRepo = "Databinder Repo" at "http://databinder.net/repo"
  lazy val ScalaToolsSnapshotRepo = "Scala-Tools Snapshot Repo" at "http://scala-tools.org/repo-snapshots"
  //type safe sbteclipse plugin repo
  lazy val typesafeRepoUrl = new java.net.URL("http://repo.typesafe.com/typesafe/releases")
  lazy val pattern = Patterns(false, "[organisation]/[module]/[sbtversion]/[revision]/[type]s/[module](-[classifier])-[revision].[ext]")
  lazy val TypeSafeRepo = Resolver.url("Typesafe Repository", typesafeRepoUrl)(pattern) 
}

object Dependencies {

  // -------------------------------------------------------------------------------------------------------------------
  // Versions
  // -------------------------------------------------------------------------------------------------------------------

  lazy val JACKSON_VERSION = "1.7.1"
  lazy val JERSEY_VERSION = "1.3"
  lazy val MULTIVERSE_VERSION = "0.6.2"
  lazy val SCALATEST_VERSION = "1.4.1"
  lazy val JETTY_VERSION = "7.4.0.v20110414"
  lazy val JAVAX_SERVLET_VERSION = "3.0"
  lazy val SLF4J_VERSION = "1.6.0"

  // Compile

  lazy val aopalliance = "aopalliance" % "aopalliance" % "1.0" % "compile" //Public domain
  lazy val aspectwerkz = "org.codehaus.aspectwerkz" % "aspectwerkz" % "2.2.3" % "compile" //ApacheV2
  lazy val commons_codec = "commons-codec" % "commons-codec" % "1.4" % "compile" //ApacheV2
  lazy val commons_io = "commons-io" % "commons-io" % "2.0.1" % "compile" //ApacheV2
  lazy val javax_servlet_30 = "org.glassfish" % "javax.servlet" % JAVAX_SERVLET_VERSION % "provided" //CDDL v1
  lazy val jetty = "org.eclipse.jetty" % "jetty-server" % JETTY_VERSION % "provided" //Eclipse license
  lazy val guicey = "org.guiceyfruit" % "guice-all" % "2.0" % "compile" //ApacheV2
  lazy val h2_lzf = "voldemort.store.compress" % "h2-lzf" % "1.0" % "compile" //ApacheV2
  lazy val jackson = "org.codehaus.jackson" % "jackson-mapper-asl" % JACKSON_VERSION % "compile" //ApacheV2
  lazy val jackson_core = "org.codehaus.jackson" % "jackson-core-asl" % JACKSON_VERSION % "compile" //ApacheV2
  lazy val jersey_server = "com.sun.jersey" % "jersey-server" % JERSEY_VERSION % "provided" //CDDL v1
  lazy val jsr250 = "javax.annotation" % "jsr250-api" % "1.0" % "compile" //CDDL v1
  lazy val jsr311 = "javax.ws.rs" % "jsr311-api" % "1.1" % "compile" //CDDL v1
  lazy val multiverse = "org.multiverse" % "multiverse-alpha" % MULTIVERSE_VERSION % "compile" //ApacheV2
  lazy val multiverse_test = "org.multiverse" % "multiverse-alpha" % MULTIVERSE_VERSION % "test" //ApacheV2
  lazy val netty = "org.jboss.netty" % "netty" % "3.2.4.Final" % "compile" //ApacheV2
  lazy val osgi_core = "org.osgi" % "org.osgi.core" % "4.2.0" //ApacheV2
  lazy val protobuf = "com.google.protobuf" % "protobuf-java" % "2.3.0" % "compile" //New BSD
  lazy val sjson = "net.debasishg" % "sjson_2.9.0" % "0.11" % "compile" //ApacheV2
  lazy val sjson_test = "net.debasishg" % "sjson_2.9.0" % "0.11" % "test" //ApacheV2
  lazy val slf4j = "org.slf4j" % "slf4j-api" % SLF4J_VERSION

  lazy val logback = "ch.qos.logback" % "logback-classic" % "0.9.28" % "runtime"

  // Test
  lazy val commons_coll = "commons-collections" % "commons-collections" % "3.2.1" % "test" //ApacheV2
  lazy val testJetty = "org.eclipse.jetty" % "jetty-server" % JETTY_VERSION % "test" //Eclipse license
  lazy val testJettyWebApp = "org.eclipse.jetty" % "jetty-webapp" % JETTY_VERSION % "test" //Eclipse license
  lazy val junit = "junit" % "junit" % "4.5" % "test" //Common Public License 1.0
  lazy val mockito = "org.mockito" % "mockito-all" % "1.8.1" % "test" //MIT
  lazy val scalatest = "org.scalatest" % "scalatest_2.9.0" % SCALATEST_VERSION % "test" //ApacheV2
  lazy val sbteclipse = "com.typesafe.sbteclipse" % "sbteclipse_2.8.1" % "1.1" extra ("sbtversion" -> "0.10.0")//这行依赖应该放在project/plugins/build.sbt中

  val Depns = Seq(
    aopalliance,
    aspectwerkz,
    commons_codec,
    commons_io,
    javax_servlet_30,
    jetty,
    guicey,
    h2_lzf,
    jackson,
    jackson_core,
    jersey_server,
    jsr250,
    jsr311,
    multiverse,
    multiverse_test,
    netty,
    osgi_core,
    protobuf,
    sjson,
    sjson_test,
    slf4j,
    logback,
    commons_coll,
    testJetty,
    testJettyWebApp,
    junit,
    mockito,
    scalatest,
    sbteclipse)


}

object AkkaBuild extends Build {
  import Settings._
  import Resolvers._

  lazy val akka = Project("akka", file("."), settings = buildSettings)
    .aggregate(
      akka_actor,
      akka_testkit,
      akka_actor_tests,
      akka_stm, akka_typed_actor,
      akka_remote, akka_http,
      akka_samples, akka_slf4j,
      akka_tutorials)

  lazy val akka_actor = Project("akka-actor", file("akka-actor"), settings = buildSettings)
  lazy val akka_testkit = Project("akka-testkit", file("akka-testkit"), settings = buildSettings) dependsOn (akka_actor)
  lazy val akka_actor_tests = Project("akka-actor-tests", file("akka-actor-tests"), settings = buildSettings) dependsOn (akka_testkit)
  lazy val akka_stm = Project("akka-stm", file("akka-stm"), settings = buildSettings) dependsOn (akka_actor)
  lazy val akka_typed_actor = Project("akka-typed-actor", file("akka-typed-actor"), settings = buildSettings) dependsOn (akka_stm, akka_actor_tests)
  lazy val akka_remote = Project("akka-remote", file("akka-remote"), settings = buildSettings) dependsOn (akka_typed_actor)
  lazy val akka_http = Project("akka-http", file("akka-http"), settings = buildSettings) dependsOn (akka_actor)
  lazy val akka_samples = Project("akka-samples", file("akka-samples"), settings = buildSettings)
  lazy val akka_slf4j = Project("akka-slf4j", file("akka-slf4j"), settings = buildSettings) dependsOn (akka_actor)
  lazy val akka_tutorials = Project("akka-tutorials", file("akka-tutorials"), settings = buildSettings) dependsOn (akka_actor)

}
最后在~/.sbt/plugins/build.sbt或project/plugins/build.sbt 中加入sbteclipse依赖
0
1
分享到:
评论
1 楼 jilen 2011-07-16  
Edit 1.1 如果将sbteclipse放在library dependency里无效,尝试将插件定义放在全区的~/.sbt/Plugin.sbt中。(原因尚未发现,可能是bug)

相关推荐

    akka-sbt-plugin-0.10.jar

    官方版本,亲测可用

    sbt-1.9.0.tgz

    SBT,全称为Scala Build Tool,是用于构建和管理Scala及Java项目的强大工具。它以其高效、灵活和可扩展性而受到开发者的广泛欢迎。在本文中,我们将深入探讨SBT的基本概念、功能以及如何使用它来管理项目。 首先,...

    scala-world-2015, scala.world 2015的源代码关于akka流/akka http.zip

    scala-world-2015, scala.world 2015的源代码关于akka流/akka http akka流/akka http-scala.world-2015会议会话源要进行测试,请在sbt中运行这里命令:log-service/re-startbackend/runMain example.repoanalyze

    IntelliJ IDEA使用SBT构建一个AKKA Scala程序

    在Scala编程中,我们经常使用SBT(Simple Build Tool)作为构建工具,它提供了项目管理和编译的功能。本教程将详细介绍如何在IntelliJ IDEA中使用SBT来构建一个基于AKKA框架的Scala程序。 首先,你需要确保已经安装...

    sbt-0.13.17

    1. **动态项目构建**:sbt采用增量构建策略,只重新编译自上次构建以来发生变化的源代码,大大提高了构建速度。 2. **基于Groovy的构建语言**:sbt使用简单的、声明式的构建脚本,名为`build.sbt`,使得构建配置...

    sbt 1.0.3.zip

    SBT,全称为Scala Build Tool,是用于构建Scala和Java项目的工具,同样也适用于管理Java项目。它基于Apache Ivy库,提供了高效的依赖管理和构建流程。Sbt 1.0.3是该工具的一个版本,发布于2017年,为开发者提供了...

    sbt-1.3.8.tar.gz

    在Unix或类Unix系统中,用户可以通过执行`./sbt`命令来启动sbt,而在Windows环境下,可能需要通过`sbt.bat`或双击执行。 总之,sbt-1.3.8是Scala开发不可或缺的一部分,它提供了高效、灵活的构建解决方案,且易于...

    sbt-launch.jar

    例如,如果你在`~/.sbt/1.0/global.sbt`或项目根目录下的`build.properties`中写入`sbt.version=0.13.9`,SBT启动时会自动下载并使用对应的sbt-launch.jar。 总的来说,sbt-launch.jar在SBT生态系统中扮演着至关...

    sbteclipse

    至于 `sbteclipse-master` 这个文件名,根据命名习惯,它可能是 `sbt eclipse` 插件的一个克隆或源码仓库的主分支,包含了该插件的全部源代码。如果你需要深入了解插件的工作原理或者对其进行定制,可以直接查看并...

    SBT 10794.3-2012 商用冷柜 第3部分:饮料冷藏陈列柜.rar

    《SBT 10794.3-2012 商用冷柜 第3部分:饮料冷藏陈列柜》是中国的一项标准,详细规定了饮料冷藏陈列柜的设计、制造、试验和检验等方面的要求,旨在保证此类设备的安全性、可靠性和能效。在商业环境中,饮料冷藏陈列...

    sbteclipse:sbt插件可创建Eclipse项目定义

    请参阅下面的安装详细信息和以获取有关配置sbteclipse的信息。 可以在下面找到有关捐款政策和许可证的信息。 安装和基本用法 打开您的插件定义文件(如果不存在,请创建一个)。 您可以使用以下任一方法: 全局...

    sbt-0.13.16.zip

    SBT,全称为Scala Build Tool,是用于构建Scala和Java项目的强大工具。它以其灵活性、高效性和自动化特性在开发社区中备受青睐。sbt-0.13.16.zip是一个包含SBT 0.13.16版本的压缩包,可能是为了方便开发者在官网下载...

    sbt-0.13.16.tgz 学习spark用

    4. **Spark与SBT的关联**:Spark是基于Scala的大数据处理框架,因此在开发Spark应用时,通常会使用SBT来管理项目和构建流程。开发者可以在`build.sbt`中指定Spark的版本和其他相关库的依赖。 5. **使用SBT构建Spark...

    kafka sbt-0.13.16.tgz

    在本例中提到的"sbt-0.13.16.tgz"可能包含了构建HBase相关Scala项目的工具和依赖,帮助开发者更方便地构建和管理HBase的Scala应用。 总结来说,HBase-0.98.6-hadoop2版本是HBase在Hadoop 2.x环境下的一个实现,它...

    sbt-launch.jar(0.13.11)已修改可直接用(2019.05.31修改)

    在oschina镜像不能用之后,现在使用阿里云作为镜像,通过该jar包能够快速地安装sbt。

    基于Akka的加密消息通信.rar_scala akka_基于Akka通信框架的加密通信项目_消息通信

    在实际项目中,开发者可能还会使用其他工具,如Scala SBT构建系统,以及集成的持续集成/持续部署(CI/CD)流程,例如Jenkins或GitLab CI。 总之,这个基于Akka的加密消息通信项目利用Scala的强大功能和Akka的并发特性...

    sbt-antlr4:适用于SBT 1.1+和0.13.x的Antlr4插件

    当在sbt 1.1.x和0.13.x中进行编译时,此插件提供了运行antlr4的功能。 如何使用 将您的.g4文件放在src/main/antlr4目录中,并制作具有以下内容的project/sbt-antlr4.sbt文件: // sbt 1.1.x addSbtPlugin(...

    sbt-launch.jar修改版

    sbt 的核心特性之一是其动态项目构建,这意味着它可以在不重新编译整个项目的情况下,只编译那些发生变化的源代码,从而提高了开发效率。 `sbt-launch.jar` 是 sbt 的一部分,它是一个自包含的 JAR 文件,包含了...

    简单构建工具-sbt-0.13.17_最后的版本.tgz

    SBT(Simple Build Tool)是一款功能强大的构建工具,尤其在Java和Scala开发领域中被广泛使用。它以其简洁的配置语法和高效的构建流程,为开发者提供了便捷的项目管理和编译环境。然而,对于初学者来说,SBT的学习...

Global site tag (gtag.js) - Google Analytics