diff --git a/CHANGELOG.md b/CHANGELOG.md index a87acfa4..0761dc31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ + * Add `classOrPackageNames` parameter to `CacheMojo` ([pull #510](https://github.com/bytedeco/javacpp/pull/510)) + ### August 2, 2021 version 1.5.6 * Add missing export to `module-info.java` file for presets package ([pull #508](https://github.com/bytedeco/javacpp/pull/508)) * Add `@NoException(true)` value to support overriding `virtual noexcept` functions diff --git a/src/main/java/org/bytedeco/javacpp/tools/BuildMojo.java b/src/main/java/org/bytedeco/javacpp/tools/BuildMojo.java index c0a258ce..f1921289 100644 --- a/src/main/java/org/bytedeco/javacpp/tools/BuildMojo.java +++ b/src/main/java/org/bytedeco/javacpp/tools/BuildMojo.java @@ -238,7 +238,7 @@ public class BuildMojo extends AbstractMojo { @Parameter(defaultValue = "${plugin}", required = true, readonly = true) PluginDescriptor plugin; - String[] merge(String[] ss, String s) { + static String[] merge(String[] ss, String s) { if (ss != null && s != null) { ss = Arrays.copyOf(ss, ss.length + 1); ss[ss.length - 1] = s; diff --git a/src/main/java/org/bytedeco/javacpp/tools/CacheMojo.java b/src/main/java/org/bytedeco/javacpp/tools/CacheMojo.java index 72656f11..77746609 100644 --- a/src/main/java/org/bytedeco/javacpp/tools/CacheMojo.java +++ b/src/main/java/org/bytedeco/javacpp/tools/CacheMojo.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 Samuel Audet + * Copyright (C) 2019-2021 Samuel Audet * * Licensed either under the Apache License, Version 2.0, or (at your option) * under the terms of the GNU General Public License as published by @@ -53,6 +53,15 @@ @Mojo(name = "cache", defaultPhase = LifecyclePhase.NONE, threadSafe = true, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME) public class CacheMojo extends AbstractMojo { + + /** Process only this class or package (suffixed with .* or .**). */ + @Parameter(property = "javacpp.classOrPackageName") + String classOrPackageName = null; + + /** Process only these classes or packages (suffixed with .* or .**). */ + @Parameter(property = "javacpp.classOrPackageNames") + String[] classOrPackageNames = null; + @Parameter(defaultValue = "${project}", required = true, readonly = true) MavenProject project; @@ -103,7 +112,13 @@ String join(String separator, Iterable strings) { for (Artifact a : artifacts) { classLoader.addPaths(a.getFile().getAbsolutePath()); } - classScanner.addPackage(null, true); + + classOrPackageNames = BuildMojo.merge(classOrPackageNames, classOrPackageName); + if (classOrPackageNames == null || classOrPackageNames.length == 0) { + classScanner.addPackage(null, true); + } else for (String s : classOrPackageNames) { + classScanner.addClassOrPackage(s); + } LinkedHashSet packages = new LinkedHashSet(); for (Class c : classes) {