View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.shared.release.phase;
20  
21  import javax.inject.Inject;
22  import javax.inject.Named;
23  import javax.inject.Singleton;
24  
25  import java.util.Map;
26  
27  import org.apache.maven.model.Model;
28  import org.apache.maven.project.MavenProject;
29  import org.apache.maven.scm.repository.ScmRepository;
30  import org.apache.maven.shared.release.ReleaseResult;
31  import org.apache.maven.shared.release.config.ReleaseDescriptor;
32  import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
33  import org.apache.maven.shared.release.scm.ScmTranslator;
34  import org.apache.maven.shared.release.transform.ModelETLFactory;
35  
36  /**
37   * Rewrite POMs for future development
38   *
39   * @author <a href="mailto:brett@apache.org">Brett Porter</a>
40   */
41  @Singleton
42  @Named("rewrite-pom-versions")
43  public class RewritePomVersionsPhase extends AbstractRewritePomsPhase {
44      @Inject
45      public RewritePomVersionsPhase(
46              ScmRepositoryConfigurator scmRepositoryConfigurator,
47              Map<String, ModelETLFactory> modelETLFactories,
48              Map<String, ScmTranslator> scmTranslators) {
49          super(scmRepositoryConfigurator, modelETLFactories, scmTranslators);
50      }
51  
52      @Override
53      protected final String getPomSuffix() {
54          return "next";
55      }
56  
57      @Override
58      protected void transformScm(
59              MavenProject project,
60              Model modelTarget,
61              ReleaseDescriptor releaseDescriptor,
62              String projectId,
63              ScmRepository scmRepository,
64              ReleaseResult result) {
65          // We are only updating versions no mods to scm needed
66      }
67  
68      @Override
69      protected boolean isUpdateScm() {
70          return false;
71      }
72  
73      @Override
74      protected String getOriginalVersion(ReleaseDescriptor releaseDescriptor, String projectKey, boolean simulate) {
75          return releaseDescriptor.getProjectOriginalVersion(projectKey);
76      }
77  
78      @Override
79      protected String getNextVersion(ReleaseDescriptor releaseDescriptor, String key) {
80          return releaseDescriptor.getProjectDevelopmentVersion(key);
81      }
82  
83      @Override
84      protected String getResolvedSnapshotVersion(String artifactVersionlessKey, ReleaseDescriptor resolvedSnapshotsMap) {
85          // Only update the pom version, not the dependency versions
86          return null;
87      }
88  }