View Javadoc
1   package org.apache.maven.it;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.io.File;
23  import java.util.List;
24  
25  import org.apache.maven.it.util.ResourceExtractor;
26  
27  /**
28   * This is a test set for <a href="https://issues.apache.org/jira/browse/MNG-6240">MNG-6240</a>.
29   *
30   * @author gboue
31   */
32  public class MavenITmng6240PluginExtensionAetherProvider
33      extends AbstractMavenIntegrationTestCase
34  {
35      public MavenITmng6240PluginExtensionAetherProvider()
36      {
37          super( "[3.5.1,)" );
38      }
39  
40      /**
41       * <p>
42       * Checks that there are no duplicate classes from maven-aether-provider on the classpath, when the build has a
43       * plugin extension that depends on the former maven-aether-provider, renamed to maven-resolver-provider.
44       * <p>
45       * One way to do this is to look at MetadataGeneratorFactory, which is a class of this module: there should only be
46       * two instances (one of SnapshotMetadataGeneratorFactory and VersionsMetadataGeneratorFactory). When there are
47       * more, the Deploy Plugin will perform the download / upload of artifact metadata multiple times. This can be
48       * verified easily from the logs.
49       *
50       * @throws Exception in case of failure
51       */
52      public void testPluginExtensionDependingOnMavenAetherProvider()
53          throws Exception
54      {
55          File testDir =
56              ResourceExtractor.simpleExtractResources( getClass(), "/mng-6240-plugin-extension-aether-provider" );
57          File pluginDir = new File( testDir, "plugin-extension" );
58          File projectDir = new File( testDir, "project" );
59  
60          Verifier verifier = newVerifier( pluginDir.getAbsolutePath(), "remote" );
61          verifier.executeGoal( "install" );
62          verifier.resetStreams();
63          verifier.verifyErrorFreeLog();
64  
65          verifier = newVerifier( projectDir.getAbsolutePath(), "remote" );
66          verifier.executeGoal( "deploy" );
67          verifier.resetStreams();
68          verifier.verifyErrorFreeLog();
69  
70          List<String> lines = verifier.loadFile( verifier.getBasedir(), verifier.getLogFileName(), false );
71          int count = 0;
72          for ( String line : lines )
73          {
74              if ( line.endsWith( "/repo/org/apache/maven/its/mng6240/project/1.0-SNAPSHOT/maven-metadata.xml" ) )
75              {
76                  count++;
77              }
78          }
79          assertEquals( 2, count ); // 1 from download, 1 from upload
80  
81      }
82  
83  }