In this post, I will explain how I set up my first program, allowing me to create and run an extremely simple Scala program in my favorite IDE using Maven.
Structure
I started out with creating the following directory structure:
scalasim +-- src | +-- main | | +-- java | | +-- resources | | \-- scala | | \-- Simulation.scala | \-- test | +-- java | +-- resources | \-- scala \-- pom.xml
Nothing exciting here – just an ordinary Maven project structure with two extra scala
directories.
The POM
Creating the file pom.xml
was not very exciting either; I basically copy-pasted it from the Scala website:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>nl.scalasim</groupId> <artifactId>scalasim</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>Scala SIM</name> <description> Tutorial application for creating a city simulation in the Scala programming language. </description> <url>http://scala-simulation.blogspot.com</url> <inceptionYear>2010</inceptionYear> <dependencies> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.8.0</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.9.1</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> <configuration> <launchers> <launcher> <id>main</id> <mainClass>nl.scalasim.Simulation</mainClass> </launcher> </launchers> </configuration> </plugin> </plugins> </build> <repositories> <repository> <id>scala-tools.org</id> <name>Scala-tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>scala-tools.org</id> <name>Scala-tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </pluginRepository> </pluginRepositories> </project>
The only interesting part can be found in lines 62–67 where I added a launcher
configuration which enables me to run my scala program from the command line using mvn scala:run
.
Using my favorite IDE I installed the Scala plugin, imported the POM, and was ready to go.
My first program
Now, everything was ready to run, and I created the following program in src/main/scala/Simulation.scala
:
object Simulation extends Application { println("My first Scala simulation") }
Running the code (using mvn scala:run
) resulted in the usual Maven output, interspersed with the text:
[INFO] My first Scala simulation
I did my hurray-it-works-dance, wrote this blog entry, and went on to do the next entry where actually exciting stuff will happen.
Lessons learned
Even in this short exercise, I learned a few things about Scala:
- Setting up a Scala project is just as easy as setting up an arbitrary Java project;
- Creating a small Scala program is easier than creating a similar program in Java;
- Scala's support for
object
definitions instead of convoluted singletons is nice.
Get the code
The full code for this post can be found at code.google.com.
No comments:
Post a Comment