Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Create abstract base class for compile and testCompile
Browse files Browse the repository at this point in the history
  • Loading branch information
Stuart Sierra committed Mar 19, 2011
1 parent 367185b commit 2f5d8ef
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 43 deletions.
35 changes: 35 additions & 0 deletions src/main/java/org/clojure/maven/AbstractClojureCompileMojo.java
@@ -0,0 +1,35 @@
package org.clojure.maven;

import java.io.File;
import java.net.URLClassLoader;
import java.util.Arrays;
import org.apache.maven.plugin.MojoExecutionException;

/**
* Ahead-of-time (AOT) compile Clojure source or test files
*
*/
public abstract class AbstractClojureCompileMojo extends AbstractClojureMojo {

/**
* Namespaces to be compiled.
* @parameter
* @required
*/
protected String[] namespaces;

public void compile(String outputDirectory, int classpathScope)
throws MojoExecutionException {

try {
new File(outputDirectory).mkdirs();
Classpath classpath = new Classpath(project, classpathScope, null);
URLClassLoader classloader = classpath.getClassLoader();
getLog().debug("Classpath URLs: " + Arrays.toString(classloader.getURLs()));
runIsolated(classloader, new ClojureCompileTask(outputDirectory, namespaces));
} catch (Exception e) {
throw new MojoExecutionException("Clojure execution failed", e);
}
}
}

24 changes: 3 additions & 21 deletions src/main/java/org/clojure/maven/ClojureCompileMojo.java
@@ -1,24 +1,14 @@
package org.clojure.maven;

import java.io.File;
import java.net.URLClassLoader;
import java.util.Arrays;
import org.apache.maven.plugin.MojoExecutionException;

/**
* Compile Clojure source files
* Ahead-of-time (AOT) compile Clojure source files
*
* @requiresDependencyResolution compile
* @goal compile
*/
public class ClojureCompileMojo extends AbstractClojureMojo {

/**
* Namespaces to be compiled.
* @parameter
* @required
*/
private String[] namespaces;
public class ClojureCompileMojo extends AbstractClojureCompileMojo {

/**
* outputDirectory
Expand All @@ -29,15 +19,7 @@ public class ClojureCompileMojo extends AbstractClojureMojo {
private String outputDirectory;

public void execute() throws MojoExecutionException {
try {
new File(outputDirectory).mkdirs();
Classpath classpath = new Classpath(project, Classpath.COMPILE_CLASSPATH | Classpath.COMPILE_SOURCES, null);
URLClassLoader classloader = classpath.getClassLoader();
getLog().debug("Classpath URLs: " + Arrays.toString(classloader.getURLs()));
runIsolated(classloader, new ClojureCompileTask(outputDirectory, namespaces));
} catch (Exception e) {
throw new MojoExecutionException("Clojure execution failed", e);
}
compile(outputDirectory, Classpath.COMPILE_CLASSPATH | Classpath.COMPILE_SOURCES);
}
}

28 changes: 6 additions & 22 deletions src/main/java/org/clojure/maven/ClojureTestCompileMojo.java
@@ -1,24 +1,14 @@
package org.clojure.maven;

import java.io.File;
import java.net.URLClassLoader;
import java.util.Arrays;
import org.apache.maven.plugin.MojoExecutionException;

/**
* Compile Clojure test source files
* Ahead-of-time (AOT) compile Clojure test source files
*
* @requiresDependencyResolution test
* @goal test-compile
* @goal testCompile
*/
public class ClojureTestCompileMojo extends AbstractClojureMojo {

/**
* Namespaces to be compiled.
* @parameter
* @required
*/
private String[] namespaces;
public class ClojureTestCompileMojo extends AbstractClojureCompileMojo {

/**
* outputDirectory
Expand All @@ -29,15 +19,9 @@ public class ClojureTestCompileMojo extends AbstractClojureMojo {
private String outputDirectory;

public void execute() throws MojoExecutionException {
try {
new File(outputDirectory).mkdirs();
Classpath classpath = new Classpath(project, Classpath.COMPILE_CLASSPATH | Classpath.COMPILE_SOURCES | Classpath.TEST_CLASSPATH | Classpath.TEST_SOURCES, null);
URLClassLoader classloader = classpath.getClassLoader();
getLog().debug("Classpath URLs: " + Arrays.toString(classloader.getURLs()));
runIsolated(classloader, new ClojureCompileTask(outputDirectory, namespaces));
} catch (Exception e) {
throw new MojoExecutionException("Clojure execution failed", e);
}
compile(outputDirectory,
Classpath.COMPILE_CLASSPATH | Classpath.COMPILE_SOURCES |
Classpath.TEST_CLASSPATH | Classpath.TEST_SOURCES);
}
}

0 comments on commit 2f5d8ef

Please sign in to comment.