Skip to content

Commit

Permalink
DRILL-6272: Jar generation changes after code review.
Browse files Browse the repository at this point in the history
  • Loading branch information
arina-ielchiieva committed May 3, 2018
1 parent 3709b04 commit f96c741
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 117 deletions.
Expand Up @@ -61,10 +61,8 @@ public static void init() throws Exception {
String binaryName = "drill-custom-lower";

JarBuilder jarBuilder = new JarBuilder("src/test/resources/drill-udf");
int result = jarBuilder.build(binaryName, buildDirectory.getAbsolutePath(), "**/CustomLowerFunction.java", null);
assertEquals("Build should be successful.", 0, result);
String binaryJar = jarBuilder.build(binaryName, buildDirectory.getAbsolutePath(), "**/CustomLowerFunction.java", null);

String binaryJar = binaryName + ".jar";
URL[] urls = {
Paths.get(buildDirectory.getPath(), binaryJar).toUri().toURL(),
Paths.get(buildDirectory.getPath(), JarUtil.getSourceName(binaryJar)).toUri().toURL()};
Expand Down
Expand Up @@ -22,6 +22,7 @@
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.ConsoleAppender;
import org.apache.drill.common.util.DrillVersionInfo;
import org.apache.maven.cli.MavenCli;
import org.apache.maven.cli.logging.Slf4jLogger;
import org.codehaus.plexus.DefaultPlexusContainer;
Expand All @@ -32,9 +33,14 @@
import java.util.LinkedList;
import java.util.List;

import static org.junit.Assert.assertEquals;

public class JarBuilder {

private static final String MAVEN_MULTI_MODULE_PROJECT_DIRECTORY = "maven.multiModuleProjectDirectory";

private final MavenCli cli;
private final String drillVersion;
private final String projectDirectory;

public JarBuilder(String projectDirectory) {
Expand All @@ -49,35 +55,48 @@ protected org.codehaus.plexus.logging.Logger createLogger(String s) {
});
}
};
this.drillVersion = DrillVersionInfo.getVersion();
this.projectDirectory = projectDirectory;
}

/**
* Builds jars using embedded maven in provided build directory.
* Includes files / resources based given pattern, otherwise using defaults provided in pom.xml.
* Checks if build exit code is 0, i.e. build was successful.
*
* @param jarName jar name
* @param buildDirectory build directory
* @param includeFiles pattern indicating which files should be included
* @param includeResources pattern indicating which resources should be included
*
* @return build exit code, 0 if build was successful
* @return binary jar name with jar extension (my-jar.jar)
*/
public int build(String jarName, String buildDirectory, String includeFiles, String includeResources) {
System.setProperty("maven.multiModuleProjectDirectory", projectDirectory);
List<String> params = new LinkedList<>();
params.add("clean");
params.add("package");
params.add("-DskipTests");
params.add("-Djar.finalName=" + jarName);
params.add("-Dcustom.buildDirectory=" + buildDirectory);
if (includeFiles != null) {
params.add("-Dinclude.files=" + includeFiles);
}
if (includeResources != null) {
params.add("-Dinclude.resources=" + includeResources);
public String build(String jarName, String buildDirectory, String includeFiles, String includeResources) {
String originalPropertyValue = System.getProperty(MAVEN_MULTI_MODULE_PROJECT_DIRECTORY);

try {
System.setProperty(MAVEN_MULTI_MODULE_PROJECT_DIRECTORY, projectDirectory);
List<String> params = new LinkedList<>();
params.add("clean");
params.add("package");
params.add("-DskipTests");
params.add("-Ddrill.version=" + drillVersion);
params.add("-Djar.finalName=" + jarName);
params.add("-Dcustom.buildDirectory=" + buildDirectory);
if (includeFiles != null) {
params.add("-Dinclude.files=" + includeFiles);
}
if (includeResources != null) {
params.add("-Dinclude.resources=" + includeResources);
}
int result = cli.doMain(params.toArray(new String[params.size()]), projectDirectory, System.out, System.err);
assertEquals("Build should be successful.", 0, result);
return jarName + ".jar";
} finally {
if (originalPropertyValue != null) {
System.setProperty(MAVEN_MULTI_MODULE_PROJECT_DIRECTORY, originalPropertyValue);
}
}
return cli.doMain(params.toArray(new String[params.size()]), projectDirectory, System.out, System.err);
}

private static Logger setupLogger(String string, Level logLevel) {
Expand Down

0 comments on commit f96c741

Please sign in to comment.