Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ public void buildDocker()
getProject(),
getLogger(),
tempDirectoryProvider,
jibExtension.getConfigurationName().get());
jibExtension.getConfigurationName().get(),
jibExtension.getSourceSetName().get());
GlobalConfig globalConfig = GlobalConfig.readConfig();
Future<Optional<String>> updateCheckFuture =
TaskCommon.newUpdateChecker(projectProperties, globalConfig, getLogger());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ public void buildImage()
getProject(),
getLogger(),
tempDirectoryProvider,
jibExtension.getConfigurationName().get());
jibExtension.getConfigurationName().get(),
jibExtension.getSourceSetName().get());
GlobalConfig globalConfig = GlobalConfig.readConfig();
Future<Optional<String>> updateCheckFuture =
TaskCommon.newUpdateChecker(projectProperties, globalConfig, getLogger());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@ public FileCollection getInputFiles() {
.map(ExtraDirectoryParameters::getFrom)
.collect(Collectors.toList());
return GradleProjectProperties.getInputFiles(
getProject(), extraDirectories, jibExtension.getConfigurationName().get());
getProject(),
extraDirectories,
jibExtension.getConfigurationName().get(),
jibExtension.getSourceSetName().get());
}

/**
Expand Down Expand Up @@ -130,7 +133,8 @@ public void buildTar()
getProject(),
getLogger(),
tempDirectoryProvider,
jibExtension.getConfigurationName().get());
jibExtension.getConfigurationName().get(),
jibExtension.getSourceSetName().get());
GlobalConfig globalConfig = GlobalConfig.readConfig();
Future<Optional<String>> updateCheckFuture =
TaskCommon.newUpdateChecker(projectProperties, globalConfig, getLogger());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,6 @@ public class GradleProjectProperties implements ProjectProperties {
/** Used for logging during main class inference. */
private static final String JAR_PLUGIN_NAME = "'jar' task";

/** Name of the `main` {@link SourceSet} to use as source files. */
private static final String MAIN_SOURCE_SET_NAME = "main";

private static final Duration LOGGING_THREAD_SHUTDOWN_TIMEOUT = Duration.ofSeconds(1);

/**
Expand All @@ -107,13 +104,15 @@ public class GradleProjectProperties implements ProjectProperties {
* @param tempDirectoryProvider for scratch space during the build
* @param configurationName the configuration of which the dependencies should be packed into the
* container
* @param sourceSetName the name of the source set which should be packed into the container
* @return a GradleProjectProperties instance to use in a jib build
*/
public static GradleProjectProperties getForProject(
Project project,
Logger logger,
TempDirectoryProvider tempDirectoryProvider,
String configurationName) {
String configurationName,
String sourceSetName) {
Supplier<List<JibGradlePluginExtension<?>>> extensionLoader =
() -> {
List<JibGradlePluginExtension<?>> extensions = new ArrayList<>();
Expand All @@ -124,7 +123,7 @@ public static GradleProjectProperties getForProject(
return extensions;
};
return new GradleProjectProperties(
project, logger, tempDirectoryProvider, extensionLoader, configurationName);
project, logger, tempDirectoryProvider, extensionLoader, configurationName, sourceSetName);
}

String getWarFilePath() {
Expand Down Expand Up @@ -163,18 +162,21 @@ private static boolean isProgressFooterEnabled(Project project) {
private final TempDirectoryProvider tempDirectoryProvider;
private final Supplier<List<JibGradlePluginExtension<?>>> extensionLoader;
private final String configurationName;
private final String sourceSetName;

@VisibleForTesting
GradleProjectProperties(
Project project,
Logger logger,
TempDirectoryProvider tempDirectoryProvider,
Supplier<List<JibGradlePluginExtension<?>>> extensionLoader,
String configurationName) {
String configurationName,
String sourceSetName) {
this.project = project;
this.tempDirectoryProvider = tempDirectoryProvider;
this.extensionLoader = extensionLoader;
this.configurationName = configurationName;
this.sourceSetName = sourceSetName;
ConsoleLoggerBuilder consoleLoggerBuilder =
(isProgressFooterEnabled(project)
? ConsoleLoggerBuilder.rich(singleThreadedExecutor, false)
Expand Down Expand Up @@ -409,14 +411,17 @@ public boolean isWarProject() {
*/
@VisibleForTesting
static FileCollection getInputFiles(
Project project, List<Path> extraDirectories, String configurationName) {
Project project,
List<Path> extraDirectories,
String configurationName,
String sourceSetName) {
List<FileCollection> dependencyFileCollections = new ArrayList<>();
dependencyFileCollections.add(project.getConfigurations().getByName(configurationName));
// Output directories (classes and resources) from main SourceSet are added
// so that BuildTarTask picks up changes in these and do not skip task
SourceSetContainer sourceSetContainer =
project.getExtensions().getByType(SourceSetContainer.class);
SourceSet mainSourceSet = sourceSetContainer.getByName(MAIN_SOURCE_SET_NAME);
SourceSet mainSourceSet = sourceSetContainer.getByName(sourceSetName);
dependencyFileCollections.add(mainSourceSet.getOutput());

extraDirectories.stream()
Expand Down Expand Up @@ -547,6 +552,6 @@ private JibGradlePluginExtension<?> findConfiguredExtension(
private SourceSet getMainSourceSet() {
SourceSetContainer sourceSetContainer =
project.getExtensions().getByType(SourceSetContainer.class);
return sourceSetContainer.getByName(MAIN_SOURCE_SET_NAME);
return sourceSetContainer.getByName(sourceSetName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Nested;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.SourceSet;

/**
* Plugin extension for {@link JibPlugin}.
Expand Down Expand Up @@ -96,6 +97,7 @@ public class JibExtension {
private final Property<Boolean> allowInsecureRegistries;
private final Property<String> containerizingMode;
private final Property<String> configurationName;
private final Property<String> sourceSetName;
private final ListProperty<ExtensionParameters> pluginExtensions;
private final ExtensionParametersSpec extensionParametersSpec;

Expand Down Expand Up @@ -126,6 +128,7 @@ public JibExtension(Project project) {
objectFactory
.property(String.class)
.convention(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
sourceSetName = objectFactory.property(String.class).convention(SourceSet.MAIN_SOURCE_SET_NAME);
}

public void from(Action<? super BaseImageParameters> action) {
Expand Down Expand Up @@ -241,6 +244,16 @@ public Property<String> getConfigurationName() {
return configurationName;
}

@Input
@Optional
public Property<String> getSourceSetName() {
String property = System.getProperty(PropertyNames.SOURCE_SET_NAME);
if (property != null && !property.equals(sourceSetName.get())) {
sourceSetName.set(property);
}
return sourceSetName;
}

@Nested
@Optional
public ListProperty<ExtensionParameters> getPluginExtensions() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ public void apply(Project project) {
projectAfterEvaluation
.getExtensions()
.getByType(SourceSetContainer.class)
.getByName(SourceSet.MAIN_SOURCE_SET_NAME);
.getByName(jibExtension.getSourceSetName().get());
jibDependencies.add(mainSourceSet.getRuntimeClasspath());
jibDependencies.add(
projectAfterEvaluation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,14 +158,17 @@ private void addGradleFiles(Project project) {
* @param project the project
*/
private void addProjectFiles(Project project) {
Preconditions.checkNotNull(jibExtension);

// Add build config, settings, etc.
addGradleFiles(project);

// Add sources + resources
SourceSetContainer sourceSetContainer =
project.getExtensions().findByType(SourceSetContainer.class);
String sourceSetName = jibExtension.getSourceSetName().get();
if (sourceSetContainer != null) {
SourceSet mainSourceSet = sourceSetContainer.findByName(SourceSet.MAIN_SOURCE_SET_NAME);
SourceSet mainSourceSet = sourceSetContainer.findByName(sourceSetName);
if (mainSourceSet != null) {
mainSourceSet
.getAllSource()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ public void listFilesAndTargets() {
getProject(),
getLogger(),
tempDirectoryProvider,
jibExtension.getConfigurationName().get());
jibExtension.getConfigurationName().get(),
jibExtension.getSourceSetName().get());

GradleRawConfiguration configuration = new GradleRawConfiguration(jibExtension);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.gradle.api.logging.configuration.ConsoleOutput;
import org.gradle.api.model.ObjectFactory;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.tasks.SourceSet;
import org.hamcrest.CoreMatchers;
import org.hamcrest.MatcherAssert;
import org.junit.Assert;
Expand Down Expand Up @@ -238,7 +239,8 @@ public void setUp() {
mockLogger,
mockTempDirectoryProvider,
() -> loadedExtensions,
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME,
SourceSet.MAIN_SOURCE_SET_NAME);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.bundling.War;
import org.gradle.jvm.tasks.Jar;
import org.gradle.testfixtures.ProjectBuilder;
Expand Down Expand Up @@ -168,7 +169,8 @@ public void setUp() throws URISyntaxException, IOException {
mockLogger,
mockTempDirectoryProvider,
mockExtensionLoader,
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME,
SourceSet.MAIN_SOURCE_SET_NAME);
}

@Test
Expand Down Expand Up @@ -219,7 +221,10 @@ public void testGetInputFiles() throws URISyntaxException {
List<Path> extraDirectories = Arrays.asList(applicationDirectory.resolve("extra-directory"));
FileCollection fileCollection =
GradleProjectProperties.getInputFiles(
project, extraDirectories, JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
project,
extraDirectories,
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME,
SourceSet.MAIN_SOURCE_SET_NAME);

assertThat(fileCollection)
.comparingElementsUsing(FILE_PATH_OF)
Expand Down Expand Up @@ -341,7 +346,8 @@ public void testCreateContainerBuilder_noClassesFiles()
mockLogger,
mockTempDirectoryProvider,
mockExtensionLoader,
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);
JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME,
SourceSet.MAIN_SOURCE_SET_NAME);

gradleProjectProperties.createJibContainerBuilder(
JavaContainerBuilder.from(RegistryImage.named("base")), ContainerizingMode.EXPLODED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public class PropertyNames {
public static final String OUTPUT_PATHS_TAR = "jib.outputPaths.tar";
public static final String CONTAINERIZING_MODE = "jib.containerizingMode";
public static final String CONFIGURATION_NAME = "jib.configurationName";
public static final String SOURCE_SET_NAME = "jib.sourceSetName";
public static final String SKIP = "jib.skip";

public static final String CONTAINERIZE = "jib.containerize";
Expand Down