Skip to content

Commit

Permalink
Introduce UberJarResourceIgnoredBuildItem
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed May 7, 2021
1 parent 9a43b13 commit 2631d23
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.quarkus.deployment.pkg.builditem;

import io.quarkus.builder.item.MultiBuildItem;

/**
* Ignore resources when building an Uber Jar
*/
public final class UberJarResourceIgnoredBuildItem extends MultiBuildItem {

private final String path;

public UberJarResourceIgnoredBuildItem(String path) {
this.path = path;
}

public String getPath() {
return path;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
import io.quarkus.deployment.pkg.builditem.NativeImageSourceJarBuildItem;
import io.quarkus.deployment.pkg.builditem.OutputTargetBuildItem;
import io.quarkus.deployment.pkg.builditem.UberJarRequiredBuildItem;
import io.quarkus.deployment.pkg.builditem.UberJarResourceIgnoredBuildItem;
import io.quarkus.deployment.pkg.builditem.UberJarResourceMergedBuildItem;
import io.quarkus.deployment.util.FileUtil;

Expand Down Expand Up @@ -206,6 +207,7 @@ public JarBuildItem buildRunnerJar(CurateOutcomeBuildItem curateOutcomeBuildItem
List<GeneratedResourceBuildItem> generatedResources,
List<UberJarRequiredBuildItem> uberJarRequired,
List<UberJarResourceMergedBuildItem> uberJarResourceMergedBuildItems,
List<UberJarResourceIgnoredBuildItem> uberJarResourceIgnoredBuildItems,
List<LegacyJarRequiredBuildItem> legacyJarRequired,
QuarkusBuildCloseablesBuildItem closeablesBuildItem,
List<AdditionalApplicationArchiveBuildItem> additionalApplicationArchiveBuildItems,
Expand All @@ -224,7 +226,7 @@ public JarBuildItem buildRunnerJar(CurateOutcomeBuildItem curateOutcomeBuildItem
|| packageConfig.type.equalsIgnoreCase(PackageConfig.UBER_JAR))) {
return buildUberJar(curateOutcomeBuildItem, outputTargetBuildItem, transformedClasses, applicationArchivesBuildItem,
packageConfig, applicationInfo, generatedClasses, generatedResources, uberJarResourceMergedBuildItems,
mainClassBuildItem);
uberJarResourceIgnoredBuildItems, mainClassBuildItem);
} else if (!legacyJarRequired.isEmpty() || packageConfig.isLegacyJar()
|| packageConfig.type.equalsIgnoreCase(PackageConfig.LEGACY)) {
return buildLegacyThinJar(curateOutcomeBuildItem, outputTargetBuildItem, transformedClasses,
Expand Down Expand Up @@ -272,6 +274,7 @@ private JarBuildItem buildUberJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
List<GeneratedClassBuildItem> generatedClasses,
List<GeneratedResourceBuildItem> generatedResources,
List<UberJarResourceMergedBuildItem> mergeResources,
List<UberJarResourceIgnoredBuildItem> ignoredResources,
MainClassBuildItem mainClassBuildItem) throws Exception {

//we use the -runner jar name, unless we are building both types
Expand All @@ -288,6 +291,7 @@ private JarBuildItem buildUberJar(CurateOutcomeBuildItem curateOutcomeBuildItem,
generatedClasses,
generatedResources,
mergeResources,
ignoredResources,
mainClassBuildItem,
runnerJar);

Expand All @@ -313,7 +317,8 @@ private void buildUberJar0(CurateOutcomeBuildItem curateOutcomeBuildItem,
ApplicationInfoBuildItem applicationInfo,
List<GeneratedClassBuildItem> generatedClasses,
List<GeneratedResourceBuildItem> generatedResources,
List<UberJarResourceMergedBuildItem> mergeResources,
List<UberJarResourceMergedBuildItem> mergedResources,
List<UberJarResourceIgnoredBuildItem> ignoredResources,
MainClassBuildItem mainClassBuildItem,
Path runnerJar) throws Exception {
try (FileSystem runnerZipFs = ZipUtils.newZip(runnerJar)) {
Expand All @@ -323,11 +328,14 @@ private void buildUberJar0(CurateOutcomeBuildItem curateOutcomeBuildItem,
final Map<String, String> seen = new HashMap<>();
final Map<String, Set<AppDependency>> duplicateCatcher = new HashMap<>();
final Map<String, List<byte[]>> concatenatedEntries = new HashMap<>();
final Set<String> mergeResourcePaths = mergeResources.stream()
final Set<String> mergeResourcePaths = mergedResources.stream()
.map(UberJarResourceMergedBuildItem::getPath)
.collect(Collectors.toSet());
Set<String> finalIgnoredEntries = new HashSet<>(IGNORED_ENTRIES);
packageConfig.userConfiguredIgnoredEntries.ifPresent(finalIgnoredEntries::addAll);
ignoredResources.stream()
.map(UberJarResourceIgnoredBuildItem::getPath)
.forEach(finalIgnoredEntries::add);

final List<AppDependency> appDeps = curateOutcomeBuildItem.getEffectiveModel().getUserDependencies();

Expand Down Expand Up @@ -886,7 +894,8 @@ public NativeImageSourceJarBuildItem buildNativeImageJar(CurateOutcomeBuildItem
List<GeneratedResourceBuildItem> generatedResources,
MainClassBuildItem mainClassBuildItem,
List<UberJarRequiredBuildItem> uberJarRequired,
List<UberJarResourceMergedBuildItem> mergeResources) throws Exception {
List<UberJarResourceMergedBuildItem> mergeResources,
List<UberJarResourceIgnoredBuildItem> ignoreResources) throws Exception {
Path targetDirectory = outputTargetBuildItem.getOutputDirectory()
.resolve(outputTargetBuildItem.getBaseName() + "-native-image-source-jar");
IoUtils.createOrEmptyDir(targetDirectory);
Expand All @@ -905,7 +914,8 @@ public NativeImageSourceJarBuildItem buildNativeImageJar(CurateOutcomeBuildItem
final NativeImageSourceJarBuildItem nativeImageSourceJarBuildItem = buildNativeImageUberJar(curateOutcomeBuildItem,
outputTargetBuildItem, transformedClasses,
applicationArchivesBuildItem,
packageConfig, applicationInfo, allClasses, generatedResources, mergeResources, mainClassBuildItem,
packageConfig, applicationInfo, allClasses, generatedResources, mergeResources,
ignoreResources, mainClassBuildItem,
targetDirectory);
// additionally copy any json config files to a location accessible by native-image tool during
// native-image generation
Expand Down Expand Up @@ -956,6 +966,7 @@ private NativeImageSourceJarBuildItem buildNativeImageUberJar(CurateOutcomeBuild
List<GeneratedClassBuildItem> generatedClasses,
List<GeneratedResourceBuildItem> generatedResources,
List<UberJarResourceMergedBuildItem> mergeResources,
List<UberJarResourceIgnoredBuildItem> ignoreResources,
MainClassBuildItem mainClassBuildItem,
Path targetDirectory) throws Exception {
//we use the -runner jar name, unless we are building both types
Expand All @@ -970,7 +981,9 @@ private NativeImageSourceJarBuildItem buildNativeImageUberJar(CurateOutcomeBuild
applicationInfo,
generatedClasses,
generatedResources,
mergeResources, mainClassBuildItem,
mergeResources,
ignoreResources,
mainClassBuildItem,
runnerJar);

return new NativeImageSourceJarBuildItem(runnerJar, null);
Expand Down

0 comments on commit 2631d23

Please sign in to comment.