Pages

12/23/2013

Create eclipse project by sbt

sbt만으로도 작업하면 좋겠지만 그래도 오랬동안 사용한 eclipse를 버릴 수는 없다..콜록
sbt는 sbteclipse plugin만 추가하면 eclipse프로젝트를 쉽게 생성 할 수 있다.
https://github.com/typesafehub/sbteclipse
사용방법부터 source까지 친절하게 나와있다.
sbteclipse를 한번 사용해보자. (우선 sbt 0.13 버전이 필요하다..난 이미 설치되어있다^^콜록)

$mkdir testSbtEclipse
$cd testSbtEclipse
$vi build.sbt

name := "testSbtEclipse"

version := "1.0"

scalaVersion := "2.10.3"

setting 사이에 꼭 Enter로 띄워주도록 하자..^^

build.sbt가 만들어졌으면 sbt를 실행해보자.
$sbt
[info] Set current project to testSbtEclipse (in build file:/Users/sil-010/Documents/scala-works/workspace/testSbtEclipse/)
> exit
$ll
drwxr-xr-x  5 sil-010  staff  170 12 23 12:30 .
drwxr-xr-x  8 sil-010  staff  272 12 23 11:56 ..
-rw-r--r--  1 sil-010  staff   70 12 23 12:28 build.sbt
drwxr-xr-x  3 sil-010  staff  102 12 23 12:23 project
drwxr-xr-x  3 sil-010  staff  102 12 23 12:30 target
프로젝트 폴더가 생성된것을 확인 할 수 있다.
이제 sbteclipse플러그인을 추가해보자.
global로 추가하려면 ~/.sbt/0.13/plugins/ 폴더
아니면 현제 프로젝트 폴더안의 project폴더안에 plugins.sbt 파일을 생성하고 sbteclipse를 추가한다.
$vi ~/Documents/scala-works/workspace/testSbtEclipse/project/plugins.sbt

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")

eclipse 명령어로 eclipse 프로젝트를 생성한다.
$sbt eclipse
[info] Loading project definition from /Users/sil-010/Documents/scala-works/workspace/testSbtEclipse/project
[info] Updating {file:/Users/sil-010/Documents/scala-works/workspace/testSbtEclipse/project/}testsbteclipse-build...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to testSbtEclipse (in build file:/Users/sil-010/Documents/scala-works/workspace/testSbtEclipse/)
[info] About to create Eclipse project files for your project(s).
[info] Updating {file:/Users/sil-010/Documents/scala-works/workspace/testSbtEclipse/}testsbteclipse...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Successfully created Eclipse project files for project(s):
[info] testSbtEclipse
$ll
drwxr-xr-x  8 sil-010  staff  272 12 23 12:43 .
drwxr-xr-x  8 sil-010  staff  272 12 23 11:56 ..
-rw-r--r--  1 sil-010  staff  589 12 23 12:43 .classpath
-rw-r--r--  1 sil-010  staff  368 12 23 12:43 .project
-rw-r--r--  1 sil-010  staff   70 12 23 12:28 build.sbt
drwxr-xr-x  5 sil-010  staff  170 12 23 12:43 project
drwxr-xr-x  4 sil-010  staff  136 12 23 12:43 src
drwxr-xr-x  5 sil-010  staff  170 12 23 12:43 target
많이 보던 익숙한 폴더 구조를 확인 할 수있다. 끄읕^^

12/08/2013

Install the ensime & sublime-ensime (Sublime text 3)

다음은 scala개발을 더 원할하게 도와줄 ensime을 설치 하겠다. 그리고 sublime-ensime플러그인까지 설치하겠다. 드디어 eclipse와 작별하는건가.. 콜록.. ㅎ

우선 sbt에 ensime-sbt-cmd plugin을 설치하자.

mkdir ~/.sbt/0.13/plugins
echo "addSbtPlugin(\"org.ensime\" % \"ensime-sbt-cmd\" % \"0.1.2\")" >> ~/.sbt/0.13/plugins/plugins.sbt
플러그인 설치 끝.
다음은 전에 만들었던 project혹은 새로운 프로젝트 폴더로 가서 ensime config file을 생성한다.
$sbt
[info] Loading global plugins from /Users/jknyou/.sbt/0.13/plugins
[info] Updating {file:/Users/jknyou/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] downloading http://repo1.maven.org/maven2/org/ensime/ensime-sbt-cmd_2.10_0.13/0.1.2/ensime-sbt-cmd-0.1.2.jar ...
[info]  [SUCCESSFUL ] org.ensime#ensime-sbt-cmd;0.1.2!ensime-sbt-cmd.jar (1412ms)
[info] Done updating.
[info] Set current project to testsbt (in build file:/Users/jknyou/workspace/scalaworks/testSbt/)
> ensime generate
[info] Gathering project information...
[info] Processing project: ProjectRef(file:/Users/jknyou/workspace/scalaworks/testSbt/,testsbt)...
[info]  Reading setting: name...
[info]  Reading setting: organization...
[info]  Reading setting: version...
[info]  Reading setting: scalaVersion...
[info]  Reading setting: moduleName...
[info]  Evaluating task: projectDependencies...
[info]  Evaluating task: unmanagedClasspath...
[info]  Evaluating task: managedClasspath...
[info]  Evaluating task: internalDependencyClasspath...
[info]  Evaluating task: unmanagedClasspath...
[info]  Evaluating task: managedClasspath...
[info]  Evaluating task: internalDependencyClasspath...
[info]  Evaluating task: exportedProducts...
[info]  Evaluating task: unmanagedClasspath...
[info]  Evaluating task: managedClasspath...
[info]  Evaluating task: internalDependencyClasspath...
[info]  Evaluating task: exportedProducts...
[info]  Reading setting: sourceDirectories...
[info]  Reading setting: sourceDirectories...
[info]  Reading setting: classDirectory...
[info]  Reading setting: classDirectory...
[info]  Reading setting: ensimeConfig...
[info] Wrote configuration to .ensime
성공!
다음은 sublime의 package Controller를 사용하여 sublime-ensime 를 설치하자.
Preferences > Package Control > Install Package > Ensime
설치가 완료되면 Ensime server를 패키지에 설치한다. sublime pageckage 확인은
sublime console에서 sublime.packages_path() 명령어로 알 수 있다.
scala버전에 맞게 Ensime을 다운 받는다. Download
Sublime pacakge폴더에 디렉토리를 생성한다.
Ensime/server (ex:/Users/jknyou/Library/Application Support/Sublime Text 3/Packages/Ensime/server) 다운 받은 ensime을 Ensime/server 디렉토리에 압축을 푼다.
drwxr-xr-x   7 jknyou  staff   238 12  8 13:20 .
drwxr-xr-x   4 jknyou  staff   136 12  8 13:20 ..
-rw-r--r--@  1 jknyou  staff   251  2 27  2013 LICENSE
-rw-r--r--@  1 jknyou  staff  3889  2 27  2013 README.md
drwxr-xr-x@  4 jknyou  staff   136  2 27  2013 bin
drwxr-xr-x@ 22 jknyou  staff   748  2 27  2013 elisp
drwxr-xr-x@ 17 jknyou  staff   578  2 27  2013 lib
jknyouui-MacBook-Air:server jknyou$ pwd
/Users/jknyou/Library/Application Support/Sublime Text 3/Packages/Ensime/server
restart Sublime Text
마우스 우클릭, Ensime > Maintenance > start
에러를 표시해주는 똑똑한 scala editer가 된것을 확인 할 수 있다.
언제나 친절한 Documentation ^^
https://github.com/sublimescala/sublime-ensime
https://www.dropbox.com/sh/ryd981hq08swyqr/V9o9rDvxkS/ENSIME%20Releases

Install SBT

sbt는 Simple Build Tool의 약자다. project 셋팅, 빌드등을 수행해주는 역할을 한다. 요즘 스칼라를 사용해보려고 하고있다. Intelli-j나 eclipse를 사용하면 되지만 왠지...sublime으로 하고 싶은 충동이 들었다... 스칼라 스크립트로 실행해도 되지만...프로그래머는 귀찮은 작업을 싫어해야한다..ㅋㅋ 그래서 sbt를 설치 하게 되었다..콜록

sbt는 설치하는 법은 어려가지가 있다. sbt setup doc 에서 확일해 볼수 있듯이 macports, brew등을 이용해 인스톨 할 수 있다.(난 언제나 맥 위주로...콜록) 하지만 난 언제나 download해서 설치하는 것을 좋아한다..콜록

다운 받자. download sbt-0.13.0
압축을 풀쟈.

tar -zxvf ./sbt.tgz
필요한 launch만 가져온다. 경로는 클래스 패스로 잡을 경로또는 잡혀있는 경로로 한다. 런처를 실행 시킬 스크립트를 만든다.
cp bin/sbt-launch.jar ~/bin
cd ~/bin
touch sbt
vi sbt
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
끝! documentation에 있는것 처럼 헬로우 월드를 찍어보자!! ㅋㅋㅋㅋ
mkdir hello
cd hello
echo 'object Hi { def main(args: Array[String]) = println("Hi!") }' > hw.scala
sbt run
잘된다...콜록 폴더 구조 및 설명도 자세히 나와있다. Documanetation 만세....콜록