Package org.apache.maven.plugins.javadoc
Class JavadocUtil
java.lang.Object
org.apache.maven.plugins.javadoc.JavadocUtil
Set of utilities methods for Javadoc.
- Since:
- 2.4
- Author:
- Vincent Siveton
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
Ignores line like 'Picked up JAVA_TOOL_OPTIONS: ...' as can happen on CI servers. -
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The default timeout used when fetching url, i.e.protected static final String
Error message when VM could not be started using invoker. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected static void
copyJavadocResources
(File outputDirectory, File javadocDir, String excludedocfilessubdir) Convenience method that copy alldoc-files
directories fromjavadocDir
to theoutputDirectory
.protected static void
copyResource
(URL url, File file) Copy the given url to the given file.protected static String
extractJavadocVersion
(String output) Parse the output for 'javadoc -J-version' and return the javadoc version recognized.protected static Collection<String>
getExcludedPackages
(Path sourceDirectory, Collection<String> excludePackagenames) Method that gets the complete package names (including subpackages) of the packages that were defined in the excludePackageNames parameter.getExcludedPackages
(Collection<Path> sourcePaths, Collection<String> excludedPackages) Method that gets all the source files to be excluded from the javadoc on the given source paths.getFilesFromSource
(File sourceDirectory, List<String> sourceFileIncludes, List<String> sourceFileExcludes, Collection<String> excludePackages) Convenience method that gets the files to be included in the javadoc.getIncludedFiles
(File sourceDirectory, String[] fileList, Collection<String> excludePackages) Method that gets the files or classes that would be included in the javadocs using the subpackages parameter.protected static org.codehaus.plexus.languages.java.version.JavaVersion
getJavadocVersion
(File javadocExe) Call the Javadoc tool and parse its output to find its version, i.e.:protected static URL
getRedirectUrl
(URL url, org.apache.maven.settings.Settings settings) Execute an Http request at the given URL, follows redirects, and returns the last redirect locations.getTagletClassNames
(File jarFile) Auto-detect the class names of the implementation ofcom.sun.tools.doclets.Taglet
class from a given jar file.protected static void
invokeMaven
(org.apache.maven.plugin.logging.Log log, File localRepositoryDir, File projectFile, List<String> goals, Properties properties, File invokerLog, File globalSettingsFile) Invoke Maven for the given project file with a list of goals and properties, the output will be in the invokerlog file.static boolean
isEmpty
(Collection<?> collection) Convenience method to determine that a collection is empty or null.static boolean
isNotEmpty
(Collection<?> collection) Convenience method to determine that a collection is not empty or null.protected static boolean
isValidElementList
(URL url, org.apache.maven.settings.Settings settings, boolean validateContent) protected static boolean
isValidPackageList
(URL url, org.apache.maven.settings.Settings settings, boolean validateContent) Validates anURL
to point to a validpackage-list
resource.protected static String
parseJavadocMemory
(String memory) Parse a memory string which be used in the JVM arguments-Xms
or-Xmx
.static Collection<Path>
pruneDirs
(org.apache.maven.project.MavenProject project, Collection<String> dirs) Method that removes the invalid directories in the specified directories.pruneFiles
(Collection<String> files) Method that removes the invalid files in the specified files.protected static String
quotedArgument
(String value) Convenience method to wrap a command line option-argument in single quotes (i.e.protected static String
quotedPathArgument
(String value) Convenience method to format a path argument so that it is properly interpreted by the javadoc tool.protected static String
Read the given file and return the content or null if an IOException occurs.static boolean
shouldPruneFile
(String f, List<String> pruned) Determine whether a file should be excluded from the provided list of paths, based on whether it exists and is already present in the list.protected static String[]
Split the given path with colon and semi-colon, to support Solaris and Windows path.static String
toRelative
(File basedir, String absolutePath) protected static String
unifyPathSeparator
(String path) Unify the given path with the current System path separator, to be platform independent.protected static boolean
validateEncoding
(String charsetName) Validate if a charset is supported on this platform.
-
Field Details
-
DEFAULT_TIMEOUT
public static final int DEFAULT_TIMEOUTThe default timeout used when fetching url, i.e. 2000.- See Also:
-
ERROR_INIT_VM
Error message when VM could not be started using invoker.- See Also:
-
-
Constructor Details
-
JavadocUtil
public JavadocUtil()
-
-
Method Details
-
pruneDirs
public static Collection<Path> pruneDirs(org.apache.maven.project.MavenProject project, Collection<String> dirs) Method that removes the invalid directories in the specified directories. Note: All elements indirs
could be an absolute or relative against the project's base directoryString
path.- Parameters:
project
- the current Maven project not nulldirs
- the collection ofString
directories path that will be validated.- Returns:
- a List of valid
String
directories absolute paths.
-
pruneFiles
Method that removes the invalid files in the specified files. Note: All elements infiles
should be an absoluteString
path.- Parameters:
files
- the list ofString
files paths that will be validated.- Returns:
- a List of valid
File
objects.
-
shouldPruneFile
Determine whether a file should be excluded from the provided list of paths, based on whether it exists and is already present in the list.- Parameters:
f
- The files.pruned
- The list of pruned files..- Returns:
- true if the file could be pruned false otherwise.
-
getExcludedPackages
protected static List<String> getExcludedPackages(Collection<Path> sourcePaths, Collection<String> excludedPackages) Method that gets all the source files to be excluded from the javadoc on the given source paths.- Parameters:
sourcePaths
- the path to the source filesexcludedPackages
- the package names to be excluded in the javadoc- Returns:
- a List of the packages to be excluded in the generated javadoc
-
quotedArgument
Convenience method to wrap a command line option-argument in single quotes (i.e.'
). Intended for values which may contain whitespace.
Line feeds (i.e.\n
) are replaced with spaces, and single quotes are backslash escaped.- Parameters:
value
- the option-argument- Returns:
- quoted option-argument
-
quotedPathArgument
Convenience method to format a path argument so that it is properly interpreted by the javadoc tool. Intended for path values which may contain whitespaces.- Parameters:
value
- the argument value.- Returns:
- path argument with quote
-
copyJavadocResources
protected static void copyJavadocResources(File outputDirectory, File javadocDir, String excludedocfilessubdir) throws IOException Convenience method that copy alldoc-files
directories fromjavadocDir
to theoutputDirectory
.- Parameters:
outputDirectory
- the output directoryjavadocDir
- the javadoc directoryexcludedocfilessubdir
- the excludedocfilessubdir parameter- Throws:
IOException
- if any- Since:
- 2.5
-
getIncludedFiles
protected static List<String> getIncludedFiles(File sourceDirectory, String[] fileList, Collection<String> excludePackages) Method that gets the files or classes that would be included in the javadocs using the subpackages parameter.- Parameters:
sourceDirectory
- the directory where the source files are locatedfileList
- the list of all relative files found in the sourceDirectoryexcludePackages
- package names to be excluded in the javadoc- Returns:
- a StringBuilder that contains the appended file names of the files to be included in the javadoc
-
getExcludedPackages
protected static Collection<String> getExcludedPackages(Path sourceDirectory, Collection<String> excludePackagenames) Method that gets the complete package names (including subpackages) of the packages that were defined in the excludePackageNames parameter.- Parameters:
sourceDirectory
- the directory where the source files are locatedexcludePackagenames
- package names to be excluded in the javadoc- Returns:
- a List of the packagenames to be excluded
-
getFilesFromSource
protected static List<String> getFilesFromSource(File sourceDirectory, List<String> sourceFileIncludes, List<String> sourceFileExcludes, Collection<String> excludePackages) Convenience method that gets the files to be included in the javadoc.- Parameters:
sourceDirectory
- the directory where the source files are locatedsourceFileIncludes
- files to includesourceFileExcludes
- files to excludeexcludePackages
- packages to be excluded from the javadocs- Returns:
- the files from which javadoc should be generated
-
getJavadocVersion
protected static org.codehaus.plexus.languages.java.version.JavaVersion getJavadocVersion(File javadocExe) throws IOException, org.codehaus.plexus.util.cli.CommandLineException, IllegalArgumentException Call the Javadoc tool and parse its output to find its version, i.e.:javadoc.exe( or.sh ) - J - version
- Parameters:
javadocExe
- not null file- Returns:
- the javadoc version as float
- Throws:
IOException
- if javadocExe is null, doesn't exist or is not a fileorg.codehaus.plexus.util.cli.CommandLineException
- if anyIllegalArgumentException
- if no output was found in the command linePatternSyntaxException
- if the output contains a syntax error in the regular-expression pattern.- See Also:
-
extractJavadocVersion
Parse the output for 'javadoc -J-version' and return the javadoc version recognized.
Here are some output for 'javadoc -J-version' depending the JDK used:Output for 'javadoc -J-version' per JDK JDK Output for 'javadoc -J-version' Sun 1.4 java full version "1.4.2_12-b03" Sun 1.5 java full version "1.5.0_07-164" IBM 1.4 javadoc full version "J2RE 1.4.2 IBM Windows 32 build cn1420-20040626" IBM 1.5 (French JVM) javadoc version complète de "J2RE 1.5.0 IBM Windows 32 build pwi32pdev-20070426a" FreeBSD 1.5 java full version "diablo-1.5.0-b01" BEA jrockit 1.5 java full version "1.5.0_11-b03" - Parameters:
output
- for 'javadoc -J-version'- Returns:
- the version of the javadoc for the output, only digits and dots
- Throws:
PatternSyntaxException
- if the output doesn't match with the output pattern(?s).*?[^a-zA-Z]([0-9]+\\.?[0-9]*)(\\.([0-9]+))?.*
.IllegalArgumentException
- if the output is null
-
parseJavadocMemory
Parse a memory string which be used in the JVM arguments-Xms
or-Xmx
.
Here are some supported memory string depending the JDK used:Memory argument support per JDK JDK Memory argument support for -Xms
or-Xmx
SUN 1024k | 128m | 1g | 1t IBM 1024k | 1024b | 128m | 128mb | 1g | 1gb BEA 1024k | 1024kb | 128m | 128mb | 1g | 1gb - Parameters:
memory
- the memory to be parsed, not null.- Returns:
- the memory parsed with a supported unit. If no unit specified in the
memory
parameter, the default unit ism
. The unitsg | gb
ort | tb
will be converted inm
. - Throws:
IllegalArgumentException
- if thememory
parameter is null or doesn't match any pattern.
-
validateEncoding
Validate if a charset is supported on this platform.- Parameters:
charsetName
- the charsetName to be check.- Returns:
true
if the given charset is supported by the JVM,false
otherwise.
-
getTagletClassNames
protected static List<String> getTagletClassNames(File jarFile) throws IOException, ClassNotFoundException, NoClassDefFoundError Auto-detect the class names of the implementation ofcom.sun.tools.doclets.Taglet
class from a given jar file.
Note:JAVA_HOME/lib/tools.jar
is a requirement to findcom.sun.tools.doclets.Taglet
class.- Parameters:
jarFile
- not null- Returns:
- the list of
com.sun.tools.doclets.Taglet
class names from a given jarFile. - Throws:
IOException
- if jarFile is invalid or not found, or if theJAVA_HOME/lib/tools.jar
is not found.ClassNotFoundException
- if anyNoClassDefFoundError
- if any
-
copyResource
Copy the given url to the given file.- Parameters:
url
- not null urlfile
- not null file where the url will be created- Throws:
IOException
- if any- Since:
- 2.6
-
invokeMaven
protected static void invokeMaven(org.apache.maven.plugin.logging.Log log, File localRepositoryDir, File projectFile, List<String> goals, Properties properties, File invokerLog, File globalSettingsFile) throws org.apache.maven.shared.invoker.MavenInvocationException Invoke Maven for the given project file with a list of goals and properties, the output will be in the invokerlog file.
Note: the Maven Home should be defined in themaven.home
Java system property or defined inM2_HOME
system env variables.- Parameters:
log
- a logger could be null.localRepositoryDir
- the localRepository not null.projectFile
- a not null project file.goals
- a not null goals list.properties
- the properties for the goals, could be null.invokerLog
- the log file where the invoker will be written, if null usingSystem.out
.globalSettingsFile
- reference to settings file, could be null.- Throws:
org.apache.maven.shared.invoker.MavenInvocationException
- if any- Since:
- 2.6
-
readFile
Read the given file and return the content or null if an IOException occurs.- Parameters:
javaFile
- not nullencoding
- could be null- Returns:
- the content with unified line separator of the given javaFile using the given encoding.
- Since:
- 2.6.1
- See Also:
-
FileUtils.fileRead(File, String)
-
splitPath
Split the given path with colon and semi-colon, to support Solaris and Windows path. Examples:splitPath( "/home:/tmp" ) = ["/home", "/tmp"] splitPath( "/home;/tmp" ) = ["/home", "/tmp"] splitPath( "C:/home:C:/tmp" ) = ["C:/home", "C:/tmp"] splitPath( "C:/home;C:/tmp" ) = ["C:/home", "C:/tmp"]
- Parameters:
path
- which can contain multiple paths separated with a colon (:
) or a semi-colon (;
), platform independent. Could be null.- Returns:
- the path splitted by colon or semi-colon or
null
if path wasnull
. - Since:
- 2.6.1
-
unifyPathSeparator
Unify the given path with the current System path separator, to be platform independent. Examples:unifyPathSeparator( "/home:/tmp" ) = "/home:/tmp" (Solaris box) unifyPathSeparator( "/home:/tmp" ) = "/home;/tmp" (Windows box)
- Parameters:
path
- which can contain multiple paths by separating them with a colon (:
) or a semi-colon (;
), platform independent. Could be null.- Returns:
- the same path but separated with the current System path separator or
null
if path wasnull
. - Since:
- 2.6.1
- See Also:
-
toRelative
-
isNotEmpty
Convenience method to determine that a collection is not empty or null.- Parameters:
collection
- the collection to verify- Returns:
true
if notnull
and not empty, otherwisefalse
-
isEmpty
Convenience method to determine that a collection is empty or null.- Parameters:
collection
- the collection to verify- Returns:
true
ifnull
or empty, otherwisefalse
-
getRedirectUrl
protected static URL getRedirectUrl(URL url, org.apache.maven.settings.Settings settings) throws IOException Execute an Http request at the given URL, follows redirects, and returns the last redirect locations. For URLs that aren't http/https, this does nothing and simply returns the given URL unchanged.- Parameters:
url
- URL.settings
- Maven settings.- Returns:
- Last redirect location.
- Throws:
IOException
- if there was an error during the Http request.
-
isValidPackageList
protected static boolean isValidPackageList(URL url, org.apache.maven.settings.Settings settings, boolean validateContent) throws IOException Validates anURL
to point to a validpackage-list
resource.- Parameters:
url
- The URL to validate.settings
- The user settings used to configure the connection to the URL ornull
.validateContent
-true
to validate the content of thepackage-list
resource;false
to only check the existence of thepackage-list
resource.- Returns:
true
ifurl
points to a validpackage-list
resource;false
else.- Throws:
IOException
- if reading the resource fails.- Since:
- 2.8
- See Also:
-
createHttpClient(org.apache.maven.settings.Settings, java.net.URL)
-
isValidElementList
protected static boolean isValidElementList(URL url, org.apache.maven.settings.Settings settings, boolean validateContent) throws IOException - Throws:
IOException
-