Maker

A scala build tool

License

License

BSD 2 clause
GroupId

GroupId

com.github.cage433
ArtifactId

ArtifactId

maker-test-reporter
Last Version

Last Version

0.06
Release Date

Release Date

Type

Type

jar
Description

Description

Maker
A scala build tool
Source Code Management

Source Code Management

https://github.com/cage433/maker

Download maker-test-reporter

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.cage433/maker-test-reporter/ -->
<dependency>
    <groupId>com.github.cage433</groupId>
    <artifactId>maker-test-reporter</artifactId>
    <version>0.06</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.cage433/maker-test-reporter/
implementation 'com.github.cage433:maker-test-reporter:0.06'
// https://jarcasting.com/artifacts/com.github.cage433/maker-test-reporter/
implementation ("com.github.cage433:maker-test-reporter:0.06")
'com.github.cage433:maker-test-reporter:jar:0.06'
<dependency org="com.github.cage433" name="maker-test-reporter" rev="0.06">
  <artifact name="maker-test-reporter" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.cage433', module='maker-test-reporter', version='0.06')
)
libraryDependencies += "com.github.cage433" % "maker-test-reporter" % "0.06"
[com.github.cage433/maker-test-reporter "0.06"]

Dependencies

compile (2)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.10.4
org.scalatest : scalatest_2.10 jar 2.2.0

Project Modules

There are no modules declared in this project.

How hard could it be to replace SBT?

Purpose

Maker is a scala build tool, written out of frustration with the complexity of SBT. It performs similar tasks, namely compile, test, publish etc - however it isn't a monad transformation tool and has no DSL. Its aim is simply to speed up the code/compile/test cycle.

Installation

Download and run the script maker.py in the directory in which your project will live. You will be prompted for the name of your project, and a minimal config file will be created at ./maker/Project.scala.

Configuration

This specifies for each module its dependencies, both external and on other modules.

Projects and modules

A project is a collection of modules, a module being a unit of compilation. A very simple codebase may just consist of a single module, note however that only projects can be published - modules cannot.

A module contains source files, test files and resources, has external dependencies, and may also depend on 'upstream' modules. By default the layout used is the maven standard, however you may notice that the maker codebase does not follow this - purely as I consider the standard to be an ugly, verbose java idiom. If you care to join me in this struggle then mix in the ClassicLayout trait and structure your projects thus :-

      project/module-a/src/
              module-a/tests/
              module-a/resources
              module-a/test-resources

      project/module-b/src/
              module-b/tests/
              module-b/resources
              module-b/test-resources

      project/Project.scala

The project file, Project.scala, defines the modules and any dependencies between them.

Launching Maker

Having created a project file, simply run the script maker.git/bin/maker.sh - this will bootstrap maker, load the project file, and launch the scala repl.

Maker Tasks

Having launched the repl Maker can perform the usual tasks one would expect from a build tool. The syntax is simply project-or-module.task. Available tasks include update, compile, testCompile, test, package, publish.

Maker knows the dependencies between tasks, both across tasks of different types (e.g. compile must be executed before testCompile) and also taking into account module dependencies (all upstream compilation must succeed before any module is compiled).

Versions

Version
0.06
0.05
0.03
0.01