Skip to content

Commit

Permalink
feat: Jar task can configure the packing and merging option.
Browse files Browse the repository at this point in the history
  • Loading branch information
teletha committed Sep 11, 2024
1 parent 0ea6c2a commit 75333ed
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
32 changes: 22 additions & 10 deletions src/main/java/bee/task/Jar.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
package bee.task;

import java.io.ByteArrayInputStream;
import java.util.function.Function;
import java.util.jar.Attributes.Name;

import javax.lang.model.SourceVersion;
Expand Down Expand Up @@ -49,6 +50,16 @@ public class Jar extends Task {
*/
protected boolean removeTraceInfo = false;

/**
* Configure how to handle your resources when creating project jar.
*/
protected Function<Option, Option> packing = Function.identity();

/**
* Configure how to handle merged resources when merging dependent jars.
*/
protected Function<Option, Option> merging = Function.identity();

/**
* Package main classes and other resources.
*/
Expand All @@ -61,8 +72,8 @@ public void source() {
dir = modify(dir);
}

pack("main classe", I.signal(dir), project.locateJar());
pack("main source", project.getSourceSet(), project.locateSourceJar());
pack("main classe", I.signal(dir), project.locateJar(), packing);
pack("main source", project.getSourceSet(), project.locateSourceJar(), null);
}

/**
Expand Down Expand Up @@ -113,8 +124,8 @@ public void test() {
File classes = project.getOutput().file(project.getProduct() + "-" + project.getVersion() + "-tests.jar");
File sources = project.getOutput().file(project.getProduct() + "-" + project.getVersion() + "-tests-sources.jar");

pack("test class", I.signal(project.getTestClasses()), classes);
pack("test source", project.getTestSourceSet(), sources);
pack("test class", I.signal(project.getTestClasses()), classes, null);
pack("test source", project.getTestSourceSet(), sources, null);
}

/**
Expand All @@ -127,8 +138,8 @@ public void project() {
File classes = project.getOutput().file(project.getProduct() + "-" + project.getVersion() + "-projects.jar");
File sources = project.getOutput().file(project.getProduct() + "-" + project.getVersion() + "-projects-sources.jar");

pack("project class", I.signal(project.getProjectClasses()), classes);
pack("project source", project.getProjectSourceSet(), sources);
pack("project class", I.signal(project.getProjectClasses()), classes, null);
pack("project source", project.getProjectSourceSet(), sources, null);
}

/**
Expand All @@ -138,7 +149,7 @@ public void project() {
public void document() {
Directory output = require(Doc::javadoc);

pack("javadoc", I.signal(output), project.locateJavadocJar());
pack("javadoc", I.signal(output), project.locateJavadocJar(), null);
}

/**
Expand All @@ -148,11 +159,12 @@ public void document() {
* @param input
* @param output
*/
private void pack(String type, Signal<Directory> input, File output) {
private void pack(String type, Signal<Directory> input, File output, Function<Option, Option> option) {
input = input.skipNull();
option = option == null ? Function.identity() : option;

Locator.folder()
.add(input, Option::strip)
.add(input, option.andThen(Option::strip))
.trackPackingTo(output)
.to(Inputs.observerFor(ui, output, "Packaging " + type + " files", "Build " + type + " jar"));
}
Expand Down Expand Up @@ -183,7 +195,7 @@ public void merge() {
folder.add(manifest, o -> o.allocateIn("META-INF"));

for (Library library : project.getDependency(Scope.Runtime)) {
folder.add(library.getLocalJar().asArchive());
folder.add(library.getLocalJar().asArchive(), merging);
}
folder.trackPackingTo(output).to(Inputs.observerFor(ui, output, "Merging class files", "Build merged classes jar"));
}
Expand Down
7 changes: 6 additions & 1 deletion src/project/java/bee/Install.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
package bee;

import bee.api.Repository;
import bee.task.Jar;
import bee.task.Test;
import kiss.I;

Expand All @@ -28,4 +27,10 @@ public void project() {

BeeInstaller.install(true, true);
}

static class Jar extends bee.task.Jar {
{
merging = o -> o.glob("!licenses/**", "!META-INF/**");
}
}
}

0 comments on commit 75333ed

Please sign in to comment.