Skip to content

Catalysts/cat-gradle-plugins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Download

cat-gradle-plugins

A collection of reusable gradle plugins. All the plugins are available on MavenCentral and JCenter, so it's easy to embed them in your projects.

Usage

You can utilize every plugin seperately but we recommend to use the same version of every plugin that you are embedding.

So your build.gradle might look like that:

buildscript {
    repositories {
        jcenter() // or mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }

    String catGradleVersion = '0.0.17'

    dependencies {
        classpath "cc.catalysts.gradle:cat-gradle-buildinfo-plugin:${catGradleVersion}"
        classpath "cc.catalysts.gradle:cat-gradle-dmuncle-plugin:${catGradleVersion}"
        classpath "cc.catalysts.gradle:cat-gradle-hibernate-plugin:${catGradleVersion}"
        classpath "cc.catalysts.gradle:cat-gradle-less-plugin:${catGradleVersion}"
        classpath "cc.catalysts.gradle:cat-gradle-sass-plugin:${catGradleVersion}"
        classpath "cc.catalysts.gradle:cat-gradle-systemjs-plugin:${catGradleVersion}"
    }
}

Changelog

The latest stable version is 0.0.29

see CHANGELOG for details

List of plugins

BUILDINFO

Generates a class BuildInfo.java that holds information about the current build like version number and build time.

Example:

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-buildinfo-plugin:' + catGradleVersion
  }
}

apply plugin: 'cc.catalysts.buildinfo'

buildinfo {
    packageName = 'cc.catalysts.mproject'
}

DMUNCLE

Analyses your project and reports dependency information to a configured server.

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-dmuncle-plugin:' + catGradleVersion
  }
}

apply plugin: 'cc.catalysts.dmuncle'

dmuncle {
    server = null
    requestTimeout = 100000
}

HIBERNATE

Generates static metamodel classes for Hibernate JPA. The sources will be generated to (default) 'target/generated-sources/hibernate' (extends compileJava task). This folder will be added to the SourceSet. The 'target/generated-sources/hibernate' directory will be deleted when running 'gradle clean'. To activate the generation for a project, just apply the plugin in the build.gradle file. Additionally you can choose the used hibernate version by defining the hibernateVersion variable on the project (or any parent project).

Example:

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-hibernate-plugin:' + catGradleVersion
  }
}

apply plugin: 'cc.catalysts.hibernate'

Example: Change destination directory to something else then the default value and use a specific hibernate Version

ext.hibernateVersion = '4.3.1.Final'

apply plugin: 'cat-hibernate'

hibernate {
    destinationDir 'PATH'
}

LESS

Takes a set of less files and compiles them to css.

Wejbars are supported by extracting all css and less files from them and by providing special global variables:

webjars-<artifactId> contains the base path of the given webjar (webjars/<artifactId>/<artifactVersion>)

Note: As less doesn't support the '.' character in variable names these will be replaced with a '-'. For example org.webjars.npm:imaginary.lib:1.4.9 will produce the variable webjars-imaginary-lib

These variables can be used anywhere in your less files to import other less or css files from any webjar.

For example you can include the twitter bootstrap styles by adding the following line:

@import "@{webjars-bootstrap}/less/bootstrap";

Configuration:

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-less-plugin:' + catGradleVersion
  }
}

apply plugin: 'cc.catalysts.less'

less {
    // The source directory of your less files
    srcDir = new File(project.projectDir, 'src/main/resources/less')
    // The actual less source files, relative to your srcDir
    srcFiles = ["${project.name}.less"]
    // The destination directory which will be treated as a 'resource' folder when the java plugin is present
    destinationDir = new File(project.buildDir, "generated-resources/cat-less")
    // The base path for all generated css files (default path matches webjar convention)
    cssPath = "META-INF/resources/webjars/${project.name}/${project.rootProject.version}"
    // A map of npm dependencies to use - can be used to change versions and add or remove plugins
    npmDependencies = [
        'less'                  : '2.5.3',
        'less-plugin-autoprefix': '1.5.1',
        'less-plugin-clean-css' : '1.5.1'
    ]
    // A list of less plugins to apply - when null then all npmDependencies starting with 'less-plugin-' will be used
    plugins = null
    // A map where the key corresponds to a less plugin name (eg 'clean-css') and the value are the cli arguments to pass to it (eg. '--s0')
    pluginOptions = [:]
    // A list of additional command line arguments to pass to the lessc
    additionalArguments = [
        '--strict-units=on'
    ]
    // A Closure<String> to transform input file names to output file names
    cssFileName = {return it.replace('.less', '.min.css')}
}

Custom Less tasks can also be configured and have access to the same configuration options. If a option is not used the default value will be assumed.

Example for generating an unminified version into the static/css folder:

task unminifiedLess(type: Less) {
    cssPath = 'static/css'
    plugins = ['autoprefix']
}

tasks.less.dependsOn('unminifiedLess')

SASS-SCSS

Takes a set of sass or scss files and compiles them to css.

Wejbars are supported by extracting all css, sass and scss files from them and providing them to you as importable files.

@import "~webjars/bootstrap/sass/bootstrap";

The import statement must follow a special syntax to be recognized as an importable webjar.

  • First it must begin with ~webjars
  • After that there is the name of the webjar (with replaced dots as dashes)
  • After that comes the path to the file INSIDE the webjar

Configuration:

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-sass-plugin:' + catGradleVersion
  }
}
  
apply plugin: 'cc.catalysts.sass'
 
sass {

    // IF the directory `src/main/resources/sass` exists these two settings will be taken by default,
    srcDir = new File(project.projectDir, 'src/main/resources/sass')
    srcFiles = ["${project.name}.sass"]
    
    // ELSE if the the sass directory does not exist AND the directory `src/main/resources/scss` exists
    // these will be the default values
    srcDir = new File(project.projectDir, 'src/main/resources/scss')
    srcFiles = ["${project.name}.scss"]
        
    
    // The destination directory which will be treated as a 'resource' folder when the java plugin is present
    destinationDir = new File(project.buildDir, "generated-resources/cat-sass")
    
    // The base path for all generated css files (default path matches webjar convention)
    cssPath = "META-INF/resources/webjars/${project.name}/${project.rootProject.version}"
    
    // A map of npm dependencies to use - can be used to change versions and add or remove plugins
    npmDependencies = [
        'node-sass': '4.5.3'
    ]
    
    // A list of additional command line arguments to pass to the node-sass compiler
    // Empty by default
    additionalArguments = [ ]
}

SYSTEMJS

Takes all configured files of a configured source folder and creates a systemjs bundle for it.

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-systemjs-plugin:' + catGradleVersion
  }
}

apply plugin: 'cc.catalysts.systemjs'

buildinfo {
    // The source directory of your js files
    srcDir = new File(project.projectDir, 'src/main/resources')
    // A glob pattern to specify which js files to include
    includePath = "**/*.js"
    // The destination directory which will be treated as a 'resource' folder when the java plugin is present
    destinationDir = new File(project.buildDir, "generated-resources/cat-systemjs")
    // The path to where the bundle file will be located
    bundlePath = "META-INF/resources/webjars/${project.name}/${project.rootProject.version}"
    // A map of npm dependencies to use - can be used to change versions
    npmDependencies = [
        'command-line-args': '2.1.4',
        'systemjs-builder' : '0.15.3'
    ]
}

WEBJARS

This feature is considered incubating and may change completely in a future version

This plugin creates a helper class Webjars containing a map which maps from webjar names to artifact information (group, name, version, webjar path).

buildscript {
  dependencies {
    classpath 'cc.catalysts.gradle:cat-gradle-webjars-plugin:' + catGradleVersion
  }
}

apply plugin: 'cc.catalysts.webjars'

webjars {
    // The package to use for the generated 'Webjars' class
    packageName = 'cc.catalysts.gradle'
    // The destination directory which will be treated as a source folder
    destinationDir = new File(project.buildDir, "generated-resources/cat-webjars")
    // a filter closure to customize which resolved artifacts should qualify as webjars
    webjarFilter = { ResolvedArtifact it ->
        return it.moduleVersion.id.group.startsWith('org.webjars')
    }
}