|
22 | 22 | import java.util.concurrent.Executors;
|
23 | 23 | import java.util.concurrent.Future;
|
24 | 24 |
|
| 25 | +import com.google.common.base.Joiner; |
25 | 26 | import org.apache.commons.io.FileUtils;
|
26 | 27 | import org.apache.maven.artifact.Artifact;
|
27 | 28 | import org.apache.maven.artifact.DependencyResolutionRequiredException;
|
@@ -111,6 +112,20 @@ public abstract class AbstractProcessorMojo extends AbstractMojo {
|
111 | 112 | */
|
112 | 113 | private List<Artifact> pluginArtifacts;
|
113 | 114 |
|
| 115 | + /** |
| 116 | + * A list of additional source roots for the apt processor |
| 117 | + * |
| 118 | + * @parameter required=false |
| 119 | + */ |
| 120 | + private List<String> additionalSourceRoots; |
| 121 | + |
| 122 | + /** |
| 123 | + * A list of additional test source roots for the apt processor |
| 124 | + * |
| 125 | + * @parameter required=false |
| 126 | + */ |
| 127 | + private List<String> additionalTestSourceRoots; |
| 128 | + |
114 | 129 | /**
|
115 | 130 | * @parameter
|
116 | 131 | */
|
@@ -422,17 +437,46 @@ protected Set<File> getSourceDirectories() {
|
422 | 437 | File outputDirectory = getOutputDirectory();
|
423 | 438 | String outputPath = outputDirectory.getAbsolutePath();
|
424 | 439 | Set<File> directories = new HashSet<File>();
|
425 |
| - List<String> directoryNames = isForTest() ? project.getTestCompileSourceRoots() |
426 |
| - : project.getCompileSourceRoots(); |
| 440 | + List<String> directoryNames = isForTest() ? getTestCompileSourceRoots() |
| 441 | + : getCompileSourceRoots(); |
427 | 442 | for (String name : directoryNames) {
|
428 | 443 | File file = new File(name);
|
429 |
| - if (!file.getAbsolutePath().equals(outputPath) && file.exists()) { |
| 444 | + if (!file.getAbsolutePath().equals(outputPath) && file.exists() && file.isDirectory()) { |
430 | 445 | directories.add(file);
|
431 | 446 | }
|
432 | 447 | }
|
433 | 448 | return directories;
|
434 | 449 | }
|
435 | 450 |
|
| 451 | + |
| 452 | + private List<String> getTestCompileSourceRoots() { |
| 453 | + @SuppressWarnings("unchecked") |
| 454 | + final List<String> testCompileSourceRoots = project.getTestCompileSourceRoots(); |
| 455 | + if (additionalTestSourceRoots == null) { |
| 456 | + return testCompileSourceRoots; |
| 457 | + } |
| 458 | + if (getLog().isDebugEnabled()) { |
| 459 | + getLog().debug("Adding additional test source roots: " + Joiner.on(", ").skipNulls().join(additionalTestSourceRoots)); |
| 460 | + } |
| 461 | + List<String> sourceRoots = new ArrayList<String>(testCompileSourceRoots); |
| 462 | + sourceRoots.addAll(additionalTestSourceRoots); |
| 463 | + return sourceRoots; |
| 464 | + } |
| 465 | + |
| 466 | + private List<String> getCompileSourceRoots() { |
| 467 | + @SuppressWarnings("unchecked") |
| 468 | + final List<String> compileSourceRoots = project.getCompileSourceRoots(); |
| 469 | + if (additionalSourceRoots == null) { |
| 470 | + return compileSourceRoots; |
| 471 | + } |
| 472 | + if (getLog().isDebugEnabled()) { |
| 473 | + getLog().debug("Adding additional source roots: " + Joiner.on(", ").skipNulls().join(additionalSourceRoots)); |
| 474 | + } |
| 475 | + List<String> sourceRoots = new ArrayList<String>(compileSourceRoots); |
| 476 | + sourceRoots.addAll(additionalSourceRoots); |
| 477 | + return sourceRoots; |
| 478 | + } |
| 479 | + |
436 | 480 | protected boolean isForTest() {
|
437 | 481 | return false;
|
438 | 482 | }
|
|
0 commit comments