com.atlassian.maven.plugins.jgitflow.manager.tasks.VerifyInitialVersionState Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jgitflow-maven-plugin Show documentation
Show all versions of jgitflow-maven-plugin Show documentation
A maven plugin to support doing git-flow releases
The newest version!
package com.atlassian.maven.plugins.jgitflow.manager.tasks;
import java.util.List;
import com.atlassian.jgitflow.core.BranchType;
import com.atlassian.jgitflow.core.JGitFlow;
import com.atlassian.maven.plugins.jgitflow.ReleaseContext;
import com.atlassian.maven.plugins.jgitflow.VersionState;
import com.atlassian.maven.plugins.jgitflow.exception.MavenJGitFlowException;
import com.atlassian.maven.plugins.jgitflow.exception.UnresolvedSnapshotsException;
import com.atlassian.maven.plugins.jgitflow.helper.ProjectHelper;
import com.atlassian.maven.plugins.jgitflow.provider.ContextProvider;
import com.atlassian.maven.plugins.jgitflow.provider.JGitFlowProvider;
import com.atlassian.maven.plugins.jgitflow.provider.ProjectCacheKey;
import com.google.common.base.Joiner;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import static com.google.common.base.Preconditions.checkNotNull;
@Component(role = VerifyInitialVersionState.class)
public class VerifyInitialVersionState
{
public static final String ls = System.getProperty("line.separator");
@Requirement
private JGitFlowProvider jGitFlowProvider;
@Requirement
private ProjectHelper projectHelper;
@Requirement
private ContextProvider contextProvider;
public void run(final BranchType branchType, List branchProjects) throws MavenJGitFlowException
{
try
{
JGitFlow flow = jGitFlowProvider.gitFlow();
ReleaseContext ctx = contextProvider.getContext();
VersionState initialVersionState = null;
ProjectCacheKey cacheKey = null;
switch (branchType)
{
case RELEASE:
initialVersionState = VersionState.SNAPSHOT;
cacheKey = ProjectCacheKey.DEVELOP_BRANCH;
break;
case HOTFIX:
initialVersionState = VersionState.RELEASE;
cacheKey = ProjectCacheKey.MASTER_BRANCH;
break;
case FEATURE:
initialVersionState = VersionState.SNAPSHOT;
cacheKey = ProjectCacheKey.DEVELOP_BRANCH;
break;
}
checkNotNull(initialVersionState);
checkNotNull(cacheKey);
projectHelper.checkPomForVersionState(initialVersionState, branchProjects);
if (!ctx.isAllowSnapshots())
{
List snapshots = projectHelper.checkForNonReactorSnapshots(cacheKey, branchProjects);
if (!snapshots.isEmpty())
{
String details = Joiner.on(ls).join(snapshots);
throw new UnresolvedSnapshotsException("Cannot start a " + branchType.name().toLowerCase() + " due to snapshot dependencies:" + ls + details);
}
}
}
catch (Exception e)
{
throw new MavenJGitFlowException("Error verifying initial version state in poms: " + e.getMessage(), e);
}
}
}