This source tree shows the usage of maven and how it likes to have your code organized. Maven is not just a build tool, it is a tool to manage the whole lifecycle of a software product. Maven is highly extensible and it makes fetching and installing library dependencies easy. Everything starts with a pom.xml file located in the root directory of a project. Maven likes to have source code organized as follows: . |-- README.txt |-- pom.xml `-- src |-- main | `-- java | `-- de | `-- jacobs_university | `-- cnds | |-- App.java | `-- Dog.java `-- test `-- java `-- de `-- jacobs_university `-- cnds |-- AppTest.java `-- DogTest.java Our source code located in the src/main/java branch consists of the definition of the Dog class (Dog.java) and the definition of an App class (App.java) thatsimply defines the main class method. We use the de.jacobs_university.cnds package namespace. The src/test/java branch contains two unit test class definitions (DogTest.java and AppTest.java). In the root project directory, you can now type: $ mvn compile This will create a directory target/classes that contains all the class files and supporting files. Run tests using $ mvn test and create a package using $ mvn package and finally cleanup all the build files using this command: $ mvn clean To run it, simply do this: $ java -jar target/dog-app-1.0-SNAPSHOT.jar If you request the exec-maven-plugin, you can also type: $ mvn exec:java /js -- Juergen Schoenwaelder Jacobs University Bremen gGmbH Phone: +49 421 200 3587 Campus Ring 1, 28759 Bremen, Germany Fax: +49 421 200 3103