diff --git a/src/it/projects/MJAVADOC-620_no-dot-in-version/invoker.properties b/src/it/projects/MJAVADOC-620_no-dot-in-version/invoker.properties new file mode 100644 index 00000000..30638151 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_no-dot-in-version/invoker.properties @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +invoker.goals.1 = -f maven-MJAVADOC620-jar install + +invoker.goals.2 = javadoc:aggregate diff --git a/src/it/projects/MJAVADOC-620_no-dot-in-version/maven-MJAVADOC620-jar/pom.xml b/src/it/projects/MJAVADOC-620_no-dot-in-version/maven-MJAVADOC620-jar/pom.xml new file mode 100644 index 00000000..6e87c007 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_no-dot-in-version/maven-MJAVADOC620-jar/pom.xml @@ -0,0 +1,27 @@ + + + + 4.0.0 + + org.apache.maven.plugins.maven-javadoc-plugin.it + maven-MJAVADOC620-jar + 1-SNAPSHOT + jar + diff --git a/src/it/projects/MJAVADOC-620_no-dot-in-version/maven-MJAVADOC620-jar/src/main/java/somepackage/Test.java b/src/it/projects/MJAVADOC-620_no-dot-in-version/maven-MJAVADOC620-jar/src/main/java/somepackage/Test.java new file mode 100644 index 00000000..18cb6fcd --- /dev/null +++ b/src/it/projects/MJAVADOC-620_no-dot-in-version/maven-MJAVADOC620-jar/src/main/java/somepackage/Test.java @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package somepackage; + +/** + * Sample top-level class that is packaged into a non-module JAR. + */ +public class Test +{ +} diff --git a/src/it/projects/MJAVADOC-620_no-dot-in-version/pom.xml b/src/it/projects/MJAVADOC-620_no-dot-in-version/pom.xml new file mode 100644 index 00000000..f857e767 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_no-dot-in-version/pom.xml @@ -0,0 +1,52 @@ + + + + 4.0.0 + + org.apache.maven.plugins.maven-javadoc-plugin.it + maven-MJAVADOC-620-test + 1.0-SNAPSHOT + jar + + Maven MJAVADOC-620 Test + + + UTF-8 + + + + + org.apache.maven.plugins.maven-javadoc-plugin.it + maven-MJAVADOC620-jar + 1-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + @project.version@ + + + + + \ No newline at end of file diff --git a/src/it/projects/MJAVADOC-620_no-dot-in-version/src/main/java/TestUsage.java b/src/it/projects/MJAVADOC-620_no-dot-in-version/src/main/java/TestUsage.java new file mode 100644 index 00000000..e0a79b14 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_no-dot-in-version/src/main/java/TestUsage.java @@ -0,0 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import somepackage.Test; + +/** + * Sample class that tries to use top-level class from a non-module JAR. + */ +public class TestUsage +{ + /** + * Sample method that uses the top-level Test class from the other project. + */ + public Test getTest() + { + return new Test(); + } +} diff --git a/src/it/projects/MJAVADOC-620_no-dot-in-version/verify.bsh b/src/it/projects/MJAVADOC-620_no-dot-in-version/verify.bsh new file mode 100644 index 00000000..bd4c872f --- /dev/null +++ b/src/it/projects/MJAVADOC-620_no-dot-in-version/verify.bsh @@ -0,0 +1,63 @@ + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.*; +import org.codehaus.plexus.util.*; + +boolean result = true; + +try +{ + File target = new File( basedir, "target" ); + if ( !target.exists() || !target.isDirectory() ) + { + System.err.println( "target file is missing or not a directory." ); + return false; + } + + File apidocs = new File( basedir, "target/site/apidocs" ); + if ( !apidocs.exists() || !apidocs.isDirectory() ) + { + System.err.println( "target/site/apidocs file is missing or not a directory." ); + return false; + } + + File options = new File( apidocs, "options" ); + if ( !options.exists() || !options.isFile() ) + { + System.err.println( "target/site/apidocs/options file is missing or not a file." ); + return false; + } + + String str = FileUtils.fileRead( options ); + + if ( !str.contains( "maven-MJAVADOC620-jar-1-SNAPSHOT.jar" ) ) + { + System.err.println( "Javadoc doesn't use correct artifacts." ); + return false; + } +} +catch( IOException e ) +{ + e.printStackTrace(); + result = false; +} + +return result; diff --git a/src/it/projects/MJAVADOC-620_top-level-package/invoker.properties b/src/it/projects/MJAVADOC-620_top-level-package/invoker.properties new file mode 100644 index 00000000..30638151 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_top-level-package/invoker.properties @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +invoker.goals.1 = -f maven-MJAVADOC620-jar install + +invoker.goals.2 = javadoc:aggregate diff --git a/src/it/projects/MJAVADOC-620_top-level-package/maven-MJAVADOC620-jar/pom.xml b/src/it/projects/MJAVADOC-620_top-level-package/maven-MJAVADOC620-jar/pom.xml new file mode 100644 index 00000000..00366177 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_top-level-package/maven-MJAVADOC620-jar/pom.xml @@ -0,0 +1,27 @@ + + + + 4.0.0 + + org.apache.maven.plugins.maven-javadoc-plugin.it + maven-MJAVADOC620-jar + 1.0-SNAPSHOT + jar + diff --git a/src/it/projects/MJAVADOC-620_top-level-package/maven-MJAVADOC620-jar/src/main/java/Test.java b/src/it/projects/MJAVADOC-620_top-level-package/maven-MJAVADOC620-jar/src/main/java/Test.java new file mode 100644 index 00000000..287d6c3d --- /dev/null +++ b/src/it/projects/MJAVADOC-620_top-level-package/maven-MJAVADOC620-jar/src/main/java/Test.java @@ -0,0 +1,25 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Sample top-level class that is packaged into a non-module JAR. + */ +public class Test +{ +} diff --git a/src/it/projects/MJAVADOC-620_top-level-package/pom.xml b/src/it/projects/MJAVADOC-620_top-level-package/pom.xml new file mode 100644 index 00000000..fc405dd5 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_top-level-package/pom.xml @@ -0,0 +1,52 @@ + + + + 4.0.0 + + org.apache.maven.plugins.maven-javadoc-plugin.it + maven-MJAVADOC-620-test + 1.0-SNAPSHOT + jar + + Maven MJAVADOC-620 Test + + + UTF-8 + + + + + org.apache.maven.plugins.maven-javadoc-plugin.it + maven-MJAVADOC620-jar + 1.0-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + @project.version@ + + + + + \ No newline at end of file diff --git a/src/it/projects/MJAVADOC-620_top-level-package/src/main/java/TestUsage.java b/src/it/projects/MJAVADOC-620_top-level-package/src/main/java/TestUsage.java new file mode 100644 index 00000000..f7c53835 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_top-level-package/src/main/java/TestUsage.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Sample class that tries to use top-level class from a non-module JAR. + */ +public class TestUsage +{ + /** + * Sample method that uses the top-level Test class from the other project. + */ + public Test getTest() + { + return new Test(); + } +} diff --git a/src/it/projects/MJAVADOC-620_top-level-package/verify.bsh b/src/it/projects/MJAVADOC-620_top-level-package/verify.bsh new file mode 100644 index 00000000..ec34b192 --- /dev/null +++ b/src/it/projects/MJAVADOC-620_top-level-package/verify.bsh @@ -0,0 +1,63 @@ + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import java.io.*; +import org.codehaus.plexus.util.*; + +boolean result = true; + +try +{ + File target = new File( basedir, "target" ); + if ( !target.exists() || !target.isDirectory() ) + { + System.err.println( "target file is missing or not a directory." ); + return false; + } + + File apidocs = new File( basedir, "target/site/apidocs" ); + if ( !apidocs.exists() || !apidocs.isDirectory() ) + { + System.err.println( "target/site/apidocs file is missing or not a directory." ); + return false; + } + + File options = new File( apidocs, "options" ); + if ( !options.exists() || !options.isFile() ) + { + System.err.println( "target/site/apidocs/options file is missing or not a file." ); + return false; + } + + String str = FileUtils.fileRead( options ); + + if ( !str.contains( "maven-MJAVADOC620-jar-1.0-SNAPSHOT.jar" ) ) + { + System.err.println( "Javadoc doesn't use correct artifacts." ); + return false; + } +} +catch( IOException e ) +{ + e.printStackTrace(); + result = false; +} + +return result; diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java index 9250cd05..7e31c156 100644 --- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java +++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java @@ -5170,6 +5170,18 @@ else if ( ModuleNameSource.MANIFEST.equals( mainModuleNameSource ) ) } } + /* MJAVADOC-620: also add all JARs where module-name-guessing leads to a FindException: */ + for ( Entry pathExceptionEntry : result.getPathExceptions().entrySet() ) + { + Exception exception = pathExceptionEntry.getValue(); + // For Java < 9 compatibility, reference FindException by name: + if ( "java.lang.module.FindException".equals( exception.getClass().getName() ) ) + { + File jarPath = pathExceptionEntry.getKey(); + classPathElements.add( jarPath ); + } + } + String classpath = StringUtils.join( classPathElements.iterator(), File.pathSeparator ); addArgIfNotEmpty( arguments, "--class-path", JavadocUtil.quotedPathArgument( classpath ), false, false );