
org.jerkar.tool.BuildDependency Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
Build simpler, stronger, faster
package org.jerkar.tool;
import java.io.File;
import java.io.Serializable;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.jerkar.api.depmanagement.JkComputedDependency;
import org.jerkar.api.utils.JkUtilsReflect;
import org.jerkar.api.utils.JkUtilsString;
/**
* A dependency on files generated by a Jerkar build (mainly on external
* project).
*
* @author Jerome Angibaud
*/
final class BuildDependency extends JkComputedDependency {
private static final long serialVersionUID = 1L;
private final JkBuild projectBuild;
private final List methods;
private BuildDependency(JkBuild projectBuild, List methods, Set files) {
super(new Invoker(projectBuild, methods), files);
this.methods = methods;
this.projectBuild = projectBuild;
}
private static class Invoker implements Runnable, Serializable {
private static final long serialVersionUID = 1L;
private final JkBuild build;
private final List methods;
Invoker(JkBuild build, List methods) {
super();
this.build = build;
this.methods = methods;
}
@Override
public void run() {
for (final String method : methods) {
JkUtilsReflect.invoke(build, method);
}
}
}
public static BuildDependency of(JkBuild projectBuild, Set files) {
return of(projectBuild, JkConstants.DEFAULT_METHOD, files);
}
public static BuildDependency of(JkBuild projectBuild, String methods, Set files) {
final List list = Arrays.asList(JkUtilsString.split(methods, " "));
return new BuildDependency(projectBuild, list, new HashSet(files));
}
public static BuildDependency of(JkBuild projectBuild, File... files) {
return of(projectBuild, new HashSet(Arrays.asList(files)));
}
public static BuildDependency of(JkBuild projectBuild, String methods, File... files) {
return of(projectBuild, methods, new HashSet(Arrays.asList(files)));
}
public JkBuild projectBuild() {
return projectBuild;
}
@Override
public String toString() {
return projectBuild.toString() + " (" + this.projectBuild.getClass().getName() + " "
+ methods + ")";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy