Moved code from jruby-gradle-plugin to here

This commit is contained in:
Schalk W. Cronjé 2014-08-27 18:19:37 +01:00
parent 00362abf0b
commit eb8138334a
4 changed files with 90 additions and 1 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
.gradle
build/
*.sw*
*.iml

View File

@ -8,7 +8,7 @@ buildscript {
}
group = 'com.github.jruby-gradle'
version = '0.1.0'
version = '0.1.1'
if (System.env.RELEASE != '1') {
version = "${version}-SNAPSHOT"

View File

@ -0,0 +1,52 @@
package com.github.jrubygradle
/**
* Created by schalkc on 27/08/2014.
*/
class JRubyWarPlugin {
void apply(Project project) {
// MIGHT NEED: project.apply plugin: 'java', 'java-base' or 'war'
project.configurations.create(JRubyWar.JRUBYWAR_CONFIG)
// TODO: Should probably check whether it exists before creating it
project.configurations {
jrubyEmbeds
}
project.dependencies {
jrubyEmbeds group: 'com.lookout', name: 'warbler-bootstrap', version: '1.+'
}
project.afterEvaluate {
JRubyWar.updateJRubyDependencies(project)
}
// TODO: jarcache should rather be inside buildDir
project.task('jrubyCacheJars', type: Copy) {
group TASK_GROUP_NAME
description 'Cache .jar-based dependencies into .jarcache/'
from project.configurations.jrubyWar
into ".jarcache"
include '**/*.jar'
}
project.task('jrubyPrepare') {
group TASK_GROUP_NAME
description 'Pre-cache and prepare all dependencies (jars and gems)'
dependsOn project.tasks.jrubyCacheJars, project.tasks.jrubyPrepareGems
}
// Only jRubyWar will depend on jrubyPrepare. Other JRubyWar tasks created by
// build script authors will be under their own control
// jrubyWar task will use jrubyWar as configuration
project.task('jrubyWar', type: JRubyWar) {
group JRubyPlugin.TASK_GROUP_NAME
description 'Create a JRuby-based web archive'
dependsOn project.tasks.jrubyPrepare
classpath project.configurations.jrubyWar
}
}
}

View File

@ -0,0 +1,36 @@
package com.github.jrubygradle
import org.gradle.api.tasks.Delete
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Test
import spock.lang.*
import static org.gradle.api.logging.LogLevel.LIFECYCLE
import static org.junit.Assert.assertTrue
/**
* @author R. Tyler Croy
*
*/
class JRubyWarPluginSpec extends Specification {
def project
def warTask
void setup() {
project = ProjectBuilder.builder().build()
project.buildDir = TESTROOT
project.logging.level = LIFECYCLE
project.apply plugin: 'com.github.jruby-gradle.war'
}
def "basic sanity check"() {
expect:
project.tasks.jrubyWar.group == 'JRuby'
project.tasks.jrubyCacheJars instanceof AbstractCopyTask
project.tasks.jrubyPrepare instanceof Task
project.tasks.jrubyWar instanceof War
project.tasks.jrubyJar instanceof Jar
}
}