Fast cOmpile and MAven Dependency management
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
Makefile
init.sh
pom.xml
readme.md

readme.md

fomad

Fast cOmpile and MAven Dependency management

A small Makefile for those who hate Maven and don't want to deal with it.

This is a hack. Normally you would simply write in Go. >:)

init a project

From your project root:

curl https://raw.githubusercontent.com/vladvelici/fomad/master/init.sh | sh

Why?

Maven is slow. Compilation of small things just takes forever (5s) compared to less than a second. But maven is good at one thing: dependency management. As longs as you depend on some libraries that depend on some other libraries which also have some dependencies, downloading the jars manually is painful. Lots of Java libraries out there give copy-and-paste Maven pom.xml dependency snippets.

Note: fomad comes from a vim user. Might not be IDE friendly.

Solution

A Makefile, a cached classpath and a script to run your software.

You don't need the Maven source code structure anymore. Just a folder where you want your .class files and a folder where you put your sources. Defaults are:

src/        - source files
bin/        - .class files
pom.xml     - Maven pom file - for dependencies only.
Makefile    - The makefile provided in this repository
.gitignore

# Autogenerated files:
r           - script generated by Makefile to help you run your Java programs
.classpath  - file that holds the maven-generated classpath
.sources    - java sources index for javac

Using ./r (the run script)

./r is a simple script genearted by the Makefile to help you run your Java applications without mvn exec:java ....

./r Hello arg1 arg2

Is the equivalent of

java -cp <some-long-classpath-generated-by-maven> Hello arg1 arg2