Skip to content

Commit fae65bd

Browse files
authored
(main) Fix resource copy in multi-module project (#838) (#841)
* Check if resource path absolute or relative * Add CHANGELOG.adoc entry closes #838
1 parent 1bd6d86 commit fae65bd

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

Diff for: CHANGELOG.adoc

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Bug Fixes::
2525
* Fix maven properties not being injected as attributes during site conversion (#656)
2626
* Remove Java 'requires open access' module warning in modern Java versions with JRuby v9.4.5.0 (#553)
2727
* Fix breadcrumbs not showing the document title in maven-site pages (#763)
28+
* Fix resource copy in multi-module project (#838)
2829

2930
Improvements::
3031

Diff for: asciidoctor-maven-plugin/src/main/java/org/asciidoctor/maven/process/CopyResourcesProcessor.java

+15-3
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,13 @@ public class CopyResourcesProcessor implements ResourcesProcessor {
6060
@Override
6161
public void process(File sourceRootDirectory, File outputRootDirectory, AsciidoctorMojo configuration) {
6262
final List<Resource> finalResources = prepareResources(sourceRootDirectory, configuration);
63-
copyResources(finalResources, outputRootDirectory);
63+
copyResources(finalResources, outputRootDirectory, configuration);
6464
}
6565

6666
/**
6767
* Initializes resources attribute excluding AsciiDoc documents, internal directories/files (those prefixed with
6868
* underscore), and docinfo files.
69-
* By default everything in the sources directories is copied.
69+
* By default, everything in the sources directories is copied.
7070
*
7171
* @return Collection of resources with properly configured includes and excludes conditions.
7272
*/
@@ -116,10 +116,22 @@ private List<Resource> prepareResources(File sourceDirectory, AsciidoctorMojo co
116116
*
117117
* @param resources Collection of {@link Resource} defining what resources to {@code outputDirectory}.
118118
* @param outputDirectory Directory where to copy resources.
119+
* @param configuration Project configuration
119120
*/
120-
private void copyResources(List<Resource> resources, File outputDirectory) {
121+
private void copyResources(List<Resource> resources, File outputDirectory, AsciidoctorMojo configuration) {
121122

122123
resources.stream()
124+
.map(resource -> {
125+
final File candidate = new File(resource.getDirectory());
126+
final File sourceDir = candidate.isAbsolute() ? candidate : new File(configuration.getProjectDirectory(), resource.getDirectory());
127+
128+
final Resource sanitizedResource = new Resource();
129+
sanitizedResource.setDirectory(sourceDir.getAbsolutePath());
130+
sanitizedResource.setTargetPath(resource.getTargetPath());
131+
sanitizedResource.setIncludes(resource.getIncludes());
132+
sanitizedResource.setExcludes(resource.getExcludes());
133+
return sanitizedResource;
134+
})
123135
.filter(resource -> new File(resource.getDirectory()).exists())
124136
.forEach(resource -> {
125137
DirectoryScanner directoryScanner = new DirectoryScanner();

0 commit comments

Comments
 (0)