20

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.

tuxdna
  • 8,257
  • 4
  • 43
  • 61

3 Answers3

15

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

sbt new scala/scala-seed.g8
kiritsuku
  • 52,967
  • 18
  • 114
  • 136
tekbe
  • 193
  • 1
  • 8
8

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  
serejja
  • 22,901
  • 6
  • 64
  • 72
  • np plugin is a great thing. But it doesn't allow me to create my own archetypes. I want to have something like project template (with 10-15% of ready-to-use code, needed to be extended), not empty project. Is it possible? – pkozlov Jul 02 '15 at 20:49
3

you may want to check out my project skeleton

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

fracca
  • 2,417
  • 1
  • 23
  • 22
  • 3
    Each time I have to create a project, I will have to follow same set of steps using `skeleton`. I want a simple command line tool. Perhaps you could add a shell script to make it even easier. – tuxdna Mar 14 '14 at 11:58