Diet Maven Mojo

A Maven Mojo for your friendly Java dependency minimization framework

License

License

Categories

Categories

Maven Build Tools
GroupId

GroupId

org.codarama.diet
ArtifactId

ArtifactId

diet-maven-mojo
Last Version

Last Version

0.0.1
Release Date

Release Date

Type

Type

maven-plugin
Description

Description

Diet Maven Mojo
A Maven Mojo for your friendly Java dependency minimization framework

Download diet-maven-mojo

How to add to project

<plugin>
    <groupId>org.codarama.diet</groupId>
    <artifactId>diet-maven-mojo</artifactId>
    <version>0.0.1</version>
</plugin>

Dependencies

compile (5)

Group / Artifact Type Version
org.apache.maven : maven-plugin-api jar 3.2.3
org.apache.maven : maven-core jar 3.3.3
org.codehaus.plexus : plexus-utils jar 3.0.8
org.codarama.diet : diet-engine jar 0.6.0
com.google.guava : guava jar 19.0

provided (1)

Group / Artifact Type Version
org.apache.maven.plugin-tools : maven-plugin-annotations jar 3.2

test (4)

Group / Artifact Type Version
junit : junit jar 4.8.2
org.mockito : mockito-all jar 1.9.5
org.powermock : powermock-module-junit4 jar 1.5.3
org.powermock : powermock-api-mockito jar 1.5.3

Project Modules

There are no modules declared in this project.

Status: Build Status Coverage Status Static Code Analysis Status Dependency Status

Chat with us: Chat at https://gitter.im/Codarama/diet-engine

Diet

Diet tries to create a jar from all of the jars used by a project. The result jar should contain only classes the project actually uses, nothing else.

This is currently just a library, but it should evolve to a Maven plugin, an eclpse plugin and perhaps a web project.

It's main target group is currently android development as space conservation is mostly uneeded for web development.

Features

Source Dependency Resolution:

Diet can resolve the dependencies of .java source files. Currently like this:

final Set<ClassName> dependencies = Dependencies
    .ofSource(SourceFile.fromFilepath("/abs/path/to/Source.java"))
    .set();

Binary Class Dependency Resolution:

Diet can also resolve the dependencies of compiled binary .class files:

final Set<ClassName> dependencies = Dependencies
    .ofClass(ClassFile.fromFilepath("/abs/path/to/Class.class"))
    .set();

The Dependencies API can also work with the classpath or with Core API File objects (no streams yet though). For more info on the Dependencies API have a look at the wiki.

Library minimization:

This will try to find all the 'actual dependencies' that a set of sources use, package them in a Jar and return it.

final JarFile outJar = Minimizer
    .sources("/abs/path/to/src/dir")
    .libs("/abs/path/to/libs") // this can also be a Maven ~/.m2/repository
    .getJar();

You can also set the output dir for the minimizer, have a look at the wiki for info.

Component Events:

Diet can notify you for updates on what it is currently doing. For instanse if you want to get detailed info while resolving the dependencies of a binary class you can:

ListenerRegistrar.register(new EventListener<ComponentEvent>() {
    public void on(ComponentEvent event) {
        // will be called on any event
    }
});

There is a whole hierarchy of events you can listen to, there is a wiki page on this also.

Usage:

In order to use the library you can either:

You can also build the master branch (on your own risk) in the same way you build the latest tag.

Notes:

Keep in mind that we're currently in very early alpha and the API changes constantly and can change dramatically :) Also wildcard imports in source files like import com.something.*; are currently not supported. So calling source dependency resolution on such a file or on a set containing one will result in an exception.

Donations:

Fund me on Gittip

org.codarama.diet

Versions

Version
0.0.1