Skip to content

Commit 08ae390

Browse files
author
Dave Syer
committed
Add dependencies to inputs in bootRepackge
See gh-1113
1 parent 1bcc136 commit 08ae390

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/repackage/RepackagePluginFeatures.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,12 @@ public OutputAction(RepackageTask task) {
8989
@Override
9090
public void execute(Jar archive) {
9191
if ("".equals(archive.getClassifier())) {
92-
setClassifier(this.task, archive);
92+
setClassifier(archive);
9393
File file = archive.getArchivePath();
9494
String classifier = this.task.getClassifier();
9595
if (classifier != null) {
9696
this.task.getInputs().file(archive);
97+
task.getInputs().file(task.getDependencies());
9798
String withClassifer = file.getName();
9899
withClassifer = StringUtils.stripFilenameExtension(withClassifer)
99100
+ "-" + classifier + "."
@@ -107,7 +108,7 @@ public void execute(Jar archive) {
107108

108109
}
109110

110-
private void setClassifier(RepackageTask task, Jar archive) {
111+
private void setClassifier(Jar archive) {
111112
Project project = task.getProject();
112113
String classifier = null;
113114
SpringBootPluginExtension extension = project.getExtensions().getByType(

spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/repackage/RepackageTask.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import java.io.File;
2020
import java.io.IOException;
21+
import java.util.ArrayList;
22+
import java.util.List;
2123
import java.util.concurrent.TimeUnit;
2224

2325
import org.gradle.api.Action;
@@ -26,6 +28,8 @@
2628
import org.gradle.api.tasks.TaskAction;
2729
import org.gradle.api.tasks.bundling.Jar;
2830
import org.springframework.boot.gradle.SpringBootPluginExtension;
31+
import org.springframework.boot.loader.tools.LibraryCallback;
32+
import org.springframework.boot.loader.tools.LibraryScope;
2933
import org.springframework.boot.loader.tools.Repackager;
3034
import org.springframework.util.FileCopyUtils;
3135

@@ -75,6 +79,30 @@ public void setClassifier(String classifier) {
7579

7680
@TaskAction
7781
public void repackage() {
82+
Project project = getProject();
83+
SpringBootPluginExtension extension = project.getExtensions().getByType(
84+
SpringBootPluginExtension.class);
85+
ProjectLibraries libraries = getLibraries();
86+
project.getTasks().withType(Jar.class, new RepackageAction(extension, libraries));
87+
}
88+
89+
public File[] getDependencies() {
90+
ProjectLibraries libraries = getLibraries();
91+
final List<File> files = new ArrayList<File>();
92+
try {
93+
libraries.doWithLibraries(new LibraryCallback() {
94+
@Override
95+
public void library(File file, LibraryScope scope) throws IOException {
96+
files.add(file);
97+
}
98+
});
99+
} catch (IOException e) {
100+
throw new IllegalStateException("Cannot retrieve dependencies", e);
101+
}
102+
return files.toArray(new File[files.size()]);
103+
}
104+
105+
private ProjectLibraries getLibraries() {
78106
Project project = getProject();
79107
SpringBootPluginExtension extension = project.getExtensions().getByType(
80108
SpringBootPluginExtension.class);
@@ -88,7 +116,7 @@ public void repackage() {
88116
else if (extension.getCustomConfiguration() != null) {
89117
libraries.setCustomConfigurationName(extension.getCustomConfiguration());
90118
}
91-
project.getTasks().withType(Jar.class, new RepackageAction(extension, libraries));
119+
return libraries;
92120
}
93121

94122
private class RepackageAction implements Action<Jar> {

0 commit comments

Comments
 (0)