You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2016/07/09 21:49:08 UTC
svn commit: r1752049 - in /maven/plugins/trunk/maven-javadoc-plugin/src:
main/java/org/apache/maven/plugin/javadoc/
main/java/org/apache/maven/plugin/javadoc/resolver/
test/java/org/apache/maven/plugin/javadoc/
Author: rfscholte
Date: Sat Jul 9 21:49:07 2016
New Revision: 1752049
URL: http://svn.apache.org/viewvc?rev=1752049&view=rev
Log:
[MJAVADOC-456] Upgrade to Maven3 plugin
Switch to TransformableFilters
Added:
maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java
Modified:
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java
Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java?rev=1752049&r1=1752048&r2=1752049&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java Sat Jul 9 21:49:07 2016
@@ -65,9 +65,6 @@ import org.apache.maven.artifact.resolve
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.execution.MavenSession;
@@ -102,9 +99,11 @@ import org.apache.maven.reporting.MavenR
import org.apache.maven.settings.Proxy;
import org.apache.maven.settings.Settings;
import org.apache.maven.shared.artifact.DefaultArtifactCoordinate;
-import org.apache.maven.shared.artifact.filter.PatternExcludesArtifactFilter;
-import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
+import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
+import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;
+import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;
import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
+import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
import org.apache.maven.shared.artifact.resolve.ArtifactResult;
import org.apache.maven.shared.dependencies.DefaultDependableCoordinate;
@@ -2298,7 +2297,7 @@ public abstract class AbstractJavadocMoj
final SourceResolverConfig config = getDependencySourceResolverConfig();
- final AndArtifactFilter andFilter = new AndArtifactFilter();
+ final List<TransformableFilter> andFilters = new ArrayList<TransformableFilter>();
final List<String> dependencyIncludes = dependencySourceIncludes;
final List<String> dependencyExcludes = dependencySourceExcludes;
@@ -2308,20 +2307,20 @@ public abstract class AbstractJavadocMoj
{
if ( !includeTransitiveDependencySources )
{
- andFilter.add( createDependencyArtifactFilter() );
+ andFilters.add( createDependencyArtifactFilter() );
}
if ( isNotEmpty( dependencyIncludes ) )
{
- andFilter.add( new PatternIncludesArtifactFilter( dependencyIncludes, false ) );
+ andFilters.add( new PatternInclusionsFilter( dependencyIncludes ) );
}
if ( isNotEmpty( dependencyExcludes ) )
{
- andFilter.add( new PatternExcludesArtifactFilter( dependencyExcludes, false ) );
+ andFilters.add( new PatternExclusionsFilter( dependencyExcludes ) );
}
- config.withFilter( andFilter );
+ config.withFilter( new AndFilter( andFilters ) );
}
try
@@ -2346,7 +2345,7 @@ public abstract class AbstractJavadocMoj
*
* @return
*/
- private ArtifactFilter createDependencyArtifactFilter()
+ private TransformableFilter createDependencyArtifactFilter()
{
Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts();
@@ -2356,7 +2355,7 @@ public abstract class AbstractJavadocMoj
artifactPatterns.add( artifact.getGroupId() + ":" + artifact.getArtifactId() );
}
- return new IncludesArtifactFilter( artifactPatterns );
+ return new PatternInclusionsFilter( artifactPatterns );
}
/**
Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java?rev=1752049&r1=1752048&r2=1752049&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java Sat Jul 9 21:49:07 2016
@@ -21,6 +21,18 @@ package org.apache.maven.plugin.javadoc.
import static org.codehaus.plexus.util.IOUtil.close;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -37,6 +49,8 @@ import org.apache.maven.plugin.javadoc.R
import org.apache.maven.plugin.javadoc.options.JavadocOptions;
import org.apache.maven.plugin.javadoc.options.io.xpp3.JavadocOptionsXpp3Reader;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.resolve.transform.ArtifactIncludeFilterTransformer;
+import org.apache.maven.shared.dependencies.resolve.DependencyResolver;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.UnArchiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -46,18 +60,6 @@ import org.codehaus.plexus.component.ann
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
/**
*
*/
@@ -69,6 +71,9 @@ public final class ResourceResolver exte
@Requirement
private ArtifactResolver resolver;
+
+ @Requirement
+ private DependencyResolver dependencyResolver;
@Requirement
private ArtifactMetadataSource artifactMetadataSource;
@@ -238,7 +243,8 @@ public final class ResourceResolver exte
for ( final Artifact artifact : artifacts )
{
- if ( config.filter() != null && !config.filter().include( artifact ) )
+ if ( config.filter() != null
+ && !new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) )
{
continue;
}
@@ -325,7 +331,8 @@ public final class ResourceResolver exte
for ( final Artifact artifact : artifacts )
{
- if ( config.filter() != null && !config.filter().include( artifact ) )
+ if ( config.filter() != null
+ && !new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) )
{
continue;
}
@@ -370,7 +377,16 @@ public final class ResourceResolver exte
final ArtifactRepository localRepo = config.localRepository();
final List<ArtifactRepository> remoteRepos = config.project().getRemoteArtifactRepositories();
- final ArtifactFilter filter = config.filter();
+ final ArtifactFilter filter;
+ if ( config.filter() != null )
+ {
+ filter = new ArtifactIncludeFilterTransformer().transform( config.filter() );
+ }
+ else
+ {
+ filter = null;
+ }
+
ArtifactFilter resolutionFilter = null;
if ( filter != null )
{
@@ -438,7 +454,8 @@ public final class ResourceResolver exte
{
final List<String> dirs = new ArrayList<String>();
- if ( config.filter() == null || config.filter().include( artifact ) )
+ if ( config.filter() == null
+ || new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) )
{
if ( config.includeCompileSources() )
{
Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java?rev=1752049&r1=1752048&r2=1752049&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java Sat Jul 9 21:49:07 2016
@@ -19,13 +19,13 @@ package org.apache.maven.plugin.javadoc.
* under the License.
*/
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.project.MavenProject;
-
import java.io.File;
import java.util.List;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
+
/**
*
*/
@@ -34,7 +34,7 @@ public class SourceResolverConfig
private final MavenProject project;
- private ArtifactFilter filter;
+ private AndFilter filter;
private List<MavenProject> reactorProjects;
@@ -63,7 +63,7 @@ public class SourceResolverConfig
* @param filter {@link ArtifactFilter}
* @return {@link SourceResolverConfig}
*/
- public SourceResolverConfig withFilter( final ArtifactFilter filter )
+ public SourceResolverConfig withFilter( final AndFilter filter )
{
this.filter = filter;
return this;
@@ -132,9 +132,9 @@ public class SourceResolverConfig
}
/**
- * @return {@link ArtifactFilter}
+ * @return {@link TransformableFilter}
*/
- public ArtifactFilter filter()
+ public AndFilter filter()
{
return filter;
}
Added: maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java?rev=1752049&view=auto
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java (added)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java Sat Jul 9 21:49:07 2016
@@ -0,0 +1,237 @@
+package org.apache.maven.plugin.javadoc;
+
+import java.io.BufferedReader;
+
+/*
+ * 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.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+public class AggregatorJavadocReportTest
+ extends AbstractMojoTestCase
+{
+ private static final char LINE_SEPARATOR = ' ';
+
+ /** flag to copy repo only one time */
+ private static boolean TEST_REPO_CREATED = false;
+
+ private File unit;
+
+ private File localRepo;
+
+ /** {@inheritDoc} */
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+
+ unit = new File( getBasedir(), "src/test/resources/unit" );
+
+ localRepo = new File( getBasedir(), "target/local-repo/" );
+
+ createTestRepo();
+ }
+
+ private JavadocReport lookupMojo( File testPom )
+ throws Exception
+ {
+ JavadocReport mojo = (JavadocReport) lookupMojo( "aggregate", testPom );
+
+ PluginDescriptor pluginDescriptor = new PluginDescriptor();
+ pluginDescriptor.setPlugin( new Plugin() );
+
+ setVariableValueToObject( mojo, "plugin", pluginDescriptor );
+ return mojo;
+ }
+
+ /**
+ * Create test repository in target directory.
+ *
+ * @throws IOException if any
+ */
+ private void createTestRepo()
+ throws IOException
+ {
+ if ( TEST_REPO_CREATED )
+ {
+ return;
+ }
+
+ localRepo.mkdirs();
+
+ // ----------------------------------------------------------------------
+ // UMLGraph
+ // ----------------------------------------------------------------------
+
+ File sourceDir = new File( unit, "doclet-test/artifact-doclet" );
+ assertTrue( sourceDir.exists() );
+ FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+ // ----------------------------------------------------------------------
+ // UMLGraph-bis
+ // ----------------------------------------------------------------------
+
+ sourceDir = new File( unit, "doclet-path-test/artifact-doclet" );
+ assertTrue( sourceDir.exists() );
+ FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+ // ----------------------------------------------------------------------
+ // commons-attributes-compiler
+ // http://www.tullmann.org/pat/taglets/
+ // ----------------------------------------------------------------------
+
+ sourceDir = new File( unit, "taglet-test/artifact-taglet" );
+ assertTrue( sourceDir.exists() );
+ FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+ // ----------------------------------------------------------------------
+ // stylesheetfile-test
+ // ----------------------------------------------------------------------
+
+ sourceDir = new File( unit, "stylesheetfile-test/artifact-stylesheetfile" );
+ assertTrue( sourceDir.exists() );
+ FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+ // ----------------------------------------------------------------------
+ // helpfile-test
+ // ----------------------------------------------------------------------
+
+ sourceDir = new File( unit, "helpfile-test/artifact-helpfile" );
+ assertTrue( sourceDir.exists() );
+ FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+ // Remove SCM files
+ List<String> files = FileUtils.getFileAndDirectoryNames( localRepo, FileUtils.getDefaultExcludesAsString(),
+ null, true, true, true, true );
+ for ( String filename : files )
+ {
+ File file = new File( filename );
+
+ if ( file.isDirectory() )
+ {
+ FileUtils.deleteDirectory( file );
+ }
+ else
+ {
+ file.delete();
+ }
+ }
+
+ TEST_REPO_CREATED = true;
+ }
+
+ /**
+ * Convenience method that reads the contents of the specified file object into a string with a <code>space</code>
+ * as line separator.
+ *
+ * @see #LINE_SEPARATOR
+ * @param file the file to be read
+ * @return a String object that contains the contents of the file
+ * @throws IOException if any
+ */
+ private static String readFile( File file )
+ throws IOException
+ {
+ String strTmp;
+ StringBuilder str = new StringBuilder( (int) file.length() );
+ BufferedReader in = new BufferedReader( new FileReader( file ) );
+
+ try
+ {
+ while ( ( strTmp = in.readLine() ) != null )
+ {
+ str.append( LINE_SEPARATOR );
+ str.append( strTmp );
+ }
+ }
+ finally
+ {
+ in.close();
+ }
+
+ return str.toString();
+ }
+
+ /**
+ * Method to test the aggregate parameter
+ *
+ * @throws Exception if any
+ */
+ public void testAggregate()
+ throws Exception
+ {
+ File testPom = new File( unit, "aggregate-test/aggregate-test-plugin-config.xml" );
+ JavadocReport mojo = (JavadocReport) lookupMojo( testPom );
+ mojo.execute();
+
+ File apidocs = new File( getBasedir(), "target/test/unit/aggregate-test/target/site/apidocs/" );
+
+ // check if project1 api files exist
+ assertTrue( new File( apidocs, "aggregate/test/project1/Project1App.html" ).exists() );
+ assertTrue( new File( apidocs, "aggregate/test/project1/Project1AppSample.html" ).exists() );
+ assertTrue( new File( apidocs, "aggregate/test/project1/Project1Sample.html" ).exists() );
+ assertTrue( new File( apidocs, "aggregate/test/project1/Project1Test.html" ).exists() );
+
+ // check if project2 api files exist
+ assertTrue( new File( apidocs, "aggregate/test/project2/Project2App.html" ).exists() );
+ assertTrue( new File( apidocs, "aggregate/test/project2/Project2AppSample.html" ).exists() );
+ assertTrue( new File( apidocs, "aggregate/test/project2/Project2Sample.html" ).exists() );
+ assertTrue( new File( apidocs, "aggregate/test/project2/Project2Test.html" ).exists() );
+ }
+
+ /**
+ * Test the javadoc resources in the aggregation case.
+ *
+ * @throws Exception if any
+ */
+ public void testAggregateJavadocResources()
+ throws Exception
+ {
+ File testPom = new File( unit, "aggregate-resources-test/aggregate-resources-test-plugin-config.xml" );
+ JavadocReport mojo = (JavadocReport) lookupMojo( testPom );
+ mojo.execute();
+
+ File apidocs = new File( getBasedir(), "target/test/unit/aggregate-resources-test/target/site/apidocs" );
+
+ // Test overview
+ File overviewSummary = new File( apidocs, "overview-summary.html" );
+ assertTrue( overviewSummary.exists() );
+ String overview = readFile( overviewSummary ).toLowerCase();
+ assertTrue( overview.contains( "<a href=\"resources/test/package-summary.html\">resources.test</a>" ) );
+ assertTrue( overview.contains( ">blabla</" ) );
+ assertTrue( overview.contains( "<a href=\"resources/test2/package-summary.html\">resources.test2</a>" ) );
+ assertTrue( overview.contains( "<a href=\"resources2/test/package-summary.html\">resources2.test</a>" ) );
+ assertTrue( overview.contains( "<a href=\"resources2/test2/package-summary.html\">resources2.test2</a>" ) );
+
+ // Test doc-files
+ File app = new File( apidocs, "resources/test/App.html" );
+ assertTrue( app.exists() );
+ overview = readFile( app );
+ assertTrue( overview.contains( "<img src=\"doc-files/maven-feather.png\" alt=\"Maven\">" ) );
+ assertTrue( new File( apidocs, "resources/test/doc-files/maven-feather.png" ).exists() );
+ }
+}