tuxdna
tuxdna

Reputation: 8487

Creating new Scala project using SBT?

I can create a sbt project like so:

$ mkdir project1
$ cd project1
$ sbt
Loading /usr/share/sbt/bin/sbt-launch-lib.bash

> set name := "project1"
[info] Defining *:name
...

> set scalaVersion :="2.10.2"
[info] Defining *:scalaVersion
...

> set version :="1.0"
[info] Defining *:version
...

> session save
[info] Reapplying settings...

> exit

This creates build.sbt file for the project.

$ cat build.sbt 
name := "project1"

scalaVersion :="2.10.2"

version :="1.0"

Now is there any command-line for doing the same? Something like:

sbt new_project "name" version scala_version

EDIT1

I figured out another way i.e. create project folder:

$ mkdir project1
$ cd project1/

Update project details:

$ sbt 'set name := "project1"' 'set scalaVersion :="2.10.2"' 'set version :="1.0"' 'session save'
Loading /usr/share/sbt/bin/sbt-launch-lib.bash
[info] Set current project to project1 (in build file:/tmp/scala/project1/)
[info] Defining *:name
[info] The new value will be used by *:description, *:normalizedName and 6 others.
[info]  Run `last` for details.
[info] Reapplying settings...
[info] Set current project to project1 (in build file:/tmp/scala/project1/)
[info] Defining *:scalaVersion
[info] The new value will be used by *:allDependencies, *:ivyScala and 10 others.
[info]  Run `last` for details.
[info] Reapplying settings...
[info] Set current project to project1 (in build file:/tmp/scala/project1/)
[info] Defining *:version
[info] The new value will be used by *:isSnapshot, *:projectId and 3 others.
[info]  Run `last` for details.
[info] Reapplying settings...
[info] Set current project to project1 (in build file:/tmp/scala/project1/)
[info] Reapplying settings...
[info] Set current project to project1 (in build file:/tmp/scala/project1/)

We have project generated and settings saved:

$ ls
build.sbt  project
$ cat build.sbt 
name := "project1"

scalaVersion :="2.10.2"

version :="1.0"

I hope SBT to natively provide functionality like in Maven: mvn archetype:generate.

Upvotes: 21

Views: 9805

Answers (3)

tekbe
tekbe

Reputation: 303

From sbt 0.13.13 on there's a built in command new:

sbt new scala/scala-seed.g8

Upvotes: 16

fracca
fracca

Reputation: 2437

you may want to check out my project skeleton

It can simplify the first steps when you need to get up and running quickly.

Upvotes: 3

serejja
serejja

Reputation: 23881

There is a np plugin for SBT that does something you are looking for. Usage:

$ sbt 
$ np name:my-new-project org:org.myproject version:0.1.0-SNAPSHOT  

Upvotes: 8

Related Questions