@@ -16,17 +16,39 @@ | |||
package org.pf4j; | |||
/** | |||
* Overwrite classes directories to {@code target/classes} and lib directories to {@code target/lib}. | |||
* It's a compound {@link PluginClasspath} ({@link #MAVEN} + {@link #GRADLE} + {@link #KOTLIN}) | |||
* used in development mode ({@link RuntimeMode#DEVELOPMENT}). | |||
* | |||
* @author Decebal Suiu | |||
*/ | |||
public class DevelopmentPluginClasspath extends PluginClasspath { | |||
public DevelopmentPluginClasspath() { | |||
super(); | |||
/** | |||
* The development plugin classpath for <a href="https://maven.apache.org">Maven</a>. | |||
* The classes directory is {@code target/classes} and the lib directory is {@code target/lib}. | |||
*/ | |||
public static final PluginClasspath MAVEN = new PluginClasspath().addClassesDirectories("target/classes").addLibDirectories("target/lib"); | |||
addClassesDirectories("target/classes"); | |||
addLibDirectories("target/lib"); | |||
/** | |||
* The development plugin classpath for <a href="https://gradle.org">Gradle</a>. | |||
* The classes directories are {@code build/classes/java/main, build/resources/main}. | |||
*/ | |||
public static final PluginClasspath GRADLE = new PluginClasspath().addClassesDirectories("build/classes/java/main", "build/resources/main"); | |||
/** | |||
* The development plugin classpath for <a href="https://kotlinlang.org">Kotlin</a>. | |||
* The classes directories are {@code build/classes/kotlin/main", build/resources/main, build/tmp/kapt3/classes/main}. | |||
*/ | |||
public static final PluginClasspath KOTLIN = new PluginClasspath().addClassesDirectories("build/classes/kotlin/main", "build/resources/main", "build/tmp/kapt3/classes/main"); | |||
public DevelopmentPluginClasspath() { | |||
addClassesDirectories(MAVEN.getClassesDirectories()); | |||
addClassesDirectories(GRADLE.getClassesDirectories()); | |||
addClassesDirectories(KOTLIN.getClassesDirectories()); | |||
addLibDirectories(MAVEN.getLibDirectories()); | |||
addLibDirectories(GRADLE.getLibDirectories()); | |||
addLibDirectories(KOTLIN.getLibDirectories()); | |||
} | |||
} |
@@ -15,9 +15,10 @@ | |||
*/ | |||
package org.pf4j; | |||
import java.util.ArrayList; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import java.util.Collection; | |||
import java.util.HashSet; | |||
import java.util.Set; | |||
/** | |||
* The classpath of the plugin. | |||
@@ -27,28 +28,35 @@ import java.util.List; | |||
*/ | |||
public class PluginClasspath { | |||
private List<String> classesDirectories; | |||
private List<String> libDirectories; | |||
private Set<String> classesDirectories = new HashSet<>(); | |||
private Set<String> libDirectories = new HashSet<>(); | |||
public PluginClasspath() { | |||
classesDirectories = new ArrayList<>(); | |||
libDirectories = new ArrayList<>(); | |||
} | |||
public Set<String> getClassesDirectories() { | |||
return classesDirectories; | |||
} | |||
public List<String> getClassesDirectories() { | |||
return classesDirectories; | |||
} | |||
public PluginClasspath addClassesDirectories(String... classesDirectories) { | |||
return addClassesDirectories(Arrays.asList(classesDirectories)); | |||
} | |||
public void addClassesDirectories(String... classesDirectories) { | |||
this.classesDirectories.addAll(Arrays.asList(classesDirectories)); | |||
} | |||
public PluginClasspath addClassesDirectories(Collection<String> classesDirectories) { | |||
this.classesDirectories.addAll(classesDirectories); | |||
public List<String> getLibDirectories() { | |||
return libDirectories; | |||
} | |||
return this; | |||
} | |||
public void addLibDirectories(String... libDirectories) { | |||
this.libDirectories.addAll(Arrays.asList(libDirectories)); | |||
} | |||
public Set<String> getLibDirectories() { | |||
return libDirectories; | |||
} | |||
public PluginClasspath addLibDirectories(String... libDirectories) { | |||
return addLibDirectories(Arrays.asList(libDirectories)); | |||
} | |||
public PluginClasspath addLibDirectories(Collection<String> libDirectories) { | |||
this.libDirectories.addAll(libDirectories); | |||
return this; | |||
} | |||
} |