Package japicmp.maven
Class JApiCmpMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- japicmp.maven.JApiCmpMojo
-
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
@Mojo(name="cmp", requiresDependencyResolution=COMPILE, defaultPhase=VERIFY, threadSafe=true) public class JApiCmpMojo extends org.apache.maven.plugin.AbstractMojo
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
JApiCmpMojo.ConfigurationVersion
-
Field Summary
Fields Modifier and Type Field Description private org.apache.maven.artifact.factory.ArtifactFactory
artifactFactory
private java.util.List<org.apache.maven.artifact.repository.ArtifactRepository>
artifactRepositories
private boolean
breakBuildBasedOnSemanticVersioning
private boolean
breakBuildBasedOnSemanticVersioningForMajorVersionZero
private boolean
breakBuildOnBinaryIncompatibleModifications
private boolean
breakBuildOnModifications
private boolean
breakBuildOnSourceIncompatibleModifications
private java.util.List<Dependency>
dependencies
private org.apache.maven.artifact.repository.ArtifactRepository
localRepository
private org.apache.maven.project.MavenProject
mavenProject
private org.apache.maven.artifact.metadata.ArtifactMetadataSource
metadataSource
private org.apache.maven.plugin.MojoExecution
mojoExecution
private java.util.List<Dependency>
newClassPathDependencies
private Version
newVersion
private java.util.List<DependencyDescriptor>
newVersions
private java.util.List<Dependency>
oldClassPathDependencies
private Version
oldVersion
private java.util.List<DependencyDescriptor>
oldVersions
private Options
options
private Parameter
parameter
private java.io.File
projectBuildDir
private java.util.List<org.eclipse.aether.repository.RemoteRepository>
remoteRepos
private org.eclipse.aether.RepositorySystemSession
repoSession
private org.eclipse.aether.RepositorySystem
repoSystem
private boolean
skip
private boolean
skipHtmlReport
private boolean
skipXmlReport
private java.lang.String
versionRangeWithProjectVersion
-
Constructor Summary
Constructors Constructor Description JApiCmpMojo()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private boolean
breakBuildBasedOnSemanticVersioning(Parameter parameter)
private boolean
breakBuildBasedOnSemanticVersioningForMajorVersionZero(Parameter parameterParam)
(package private) void
breakBuildIfNecessary(java.util.List<JApiClass> jApiClasses, Parameter parameterParam, Options options, JarArchiveComparator jarArchiveComparator)
private boolean
breakBuildOnBinaryIncompatibleModifications(Parameter parameterParam)
private boolean
breakBuildOnModificationsParameter(Parameter parameterParam)
private boolean
breakBuildOnSourceIncompatibleModifications(Parameter parameter)
private java.lang.String
createFilename(MavenParameters mavenParameters)
private java.io.File
createJapiCmpBaseDir(PluginParameters pluginParameters)
void
execute()
(package private) Optional<XmlOutput>
executeWithParameters(PluginParameters pluginParameters, MavenParameters mavenParameters)
private void
filterSnapshots(java.util.List<org.eclipse.aether.version.Version> versions)
private void
filterVersionPattern(java.util.List<org.eclipse.aether.version.Version> availableVersions, PluginParameters pluginParameters)
private void
generateDiffOutput(MavenParameters mavenParameters, PluginParameters pluginParameters, Options options, java.util.List<JApiClass> jApiClasses, java.io.File jApiCmpBuildDir)
private XmlOutput
generateXmlOutput(java.util.List<JApiClass> jApiClasses, java.io.File jApiCmpBuildDir, Options options, MavenParameters mavenParameters, PluginParameters pluginParameters)
private org.eclipse.aether.artifact.Artifact
getComparisonArtifact(MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
(package private) Options
getOptions(PluginParameters pluginParameters, MavenParameters mavenParameters)
private java.lang.String
guessVersion(java.io.File file)
private void
handleMissingArtifactFile(PluginParameters pluginParameters, org.eclipse.aether.artifact.Artifact artifact)
private boolean
ignoreMissingArtifact(PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private boolean
ignoreMissingNewVersion(PluginParameters pluginParameters)
private boolean
ignoreMissingNewVersion(PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private boolean
ignoreMissingOldVersion(PluginParameters pluginParameters)
private boolean
ignoreMissingOldVersion(PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private boolean
ignoreNonResolvableArtifacts(PluginParameters pluginParameters)
private boolean
isPomModuleNeedingSkip(PluginParameters pluginParameters, MavenParameters mavenParameters)
private java.lang.String
mapPackaging(java.lang.String packaging, boolean condition, java.lang.String mappedPackaging)
private static <T> T
notNull(T value, java.lang.String msg)
private void
populateArchivesListsFromParameters(PluginParameters pluginParameters, MavenParameters mavenParameters, java.util.List<JApiCmpArchive> oldArchives, java.util.List<JApiCmpArchive> newArchives)
private void
processArtifacResult(org.eclipse.aether.artifact.DefaultArtifact artifactVersion, org.eclipse.aether.resolution.ArtifactResult artifactResult, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private java.util.Set<org.eclipse.aether.artifact.Artifact>
resolveArtifact(Dependency dependency, MavenParameters mavenParameters, boolean transitively, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private java.util.Set<org.eclipse.aether.artifact.Artifact>
resolveArtifact(org.eclipse.aether.artifact.Artifact artifact, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private java.util.List<JApiCmpArchive>
resolveConfigurationFileToFile(java.lang.String parameterName, ConfigurationFile configurationFile, JApiCmpMojo.ConfigurationVersion configurationVersion, PluginParameters pluginParameters)
private java.util.List<JApiCmpArchive>
resolveDependencyToFile(java.lang.String parameterName, Dependency dependency, MavenParameters mavenParameters, boolean transitively, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private java.util.List<JApiCmpArchive>
retrieveFileFromConfiguration(DependencyDescriptor dependencyDescriptor, java.lang.String parameterName, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private java.util.List<JApiCmpArchive>
retrieveFileFromConfiguration(Version version, java.lang.String parameterName, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private void
setUpClassPath(JarArchiveComparatorOptions comparatorOptions, PluginParameters pluginParameters, MavenParameters mavenParameters)
private void
setUpClassPathUsingMavenProject(JarArchiveComparatorOptions comparatorOptions, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
private void
setUpOverrideCompatibilityChanges(JarArchiveComparatorOptions comparatorOptions, PluginParameters pluginParameters)
private boolean
skipHtmlReport(PluginParameters pluginParameters)
private boolean
skipModule(PluginParameters pluginParameters, MavenParameters mavenParameters)
private boolean
skipXmlReport(PluginParameters pluginParameters)
private java.lang.String
toDescriptor(org.eclipse.aether.artifact.Artifact artifact)
private void
writeToFile(java.lang.String output, java.io.File outputfile)
-
-
-
Field Detail
-
oldVersion
@Parameter(required=false) private Version oldVersion
-
oldVersions
@Parameter(required=false) private java.util.List<DependencyDescriptor> oldVersions
-
newVersion
@Parameter(required=false) private Version newVersion
-
newVersions
@Parameter(required=false) private java.util.List<DependencyDescriptor> newVersions
-
parameter
@Parameter(required=false) private Parameter parameter
-
dependencies
@Parameter(required=false) private java.util.List<Dependency> dependencies
-
oldClassPathDependencies
@Parameter(required=false) private java.util.List<Dependency> oldClassPathDependencies
-
newClassPathDependencies
@Parameter(required=false) private java.util.List<Dependency> newClassPathDependencies
-
skip
@Parameter(property="japicmp.skip", required=false) private boolean skip
-
skipXmlReport
@Parameter(property="japicmp.skipXmlReport", required=false) private boolean skipXmlReport
-
skipHtmlReport
@Parameter(property="japicmp.skipHtmlReport", required=false) private boolean skipHtmlReport
-
breakBuildOnModifications
@Parameter(property="japicmp.breakBuildOnModifications", required=false) private boolean breakBuildOnModifications
-
breakBuildOnBinaryIncompatibleModifications
@Parameter(property="japicmp.breakBuildOnBinaryIncompatibleModifications", required=false) private boolean breakBuildOnBinaryIncompatibleModifications
-
breakBuildOnSourceIncompatibleModifications
@Parameter(property="japicmp.breakBuildOnSourceIncompatibleModifications", required=false) private boolean breakBuildOnSourceIncompatibleModifications
-
breakBuildBasedOnSemanticVersioning
@Parameter(property="japicmp.breakBuildBasedOnSemanticVersioning", required=false) private boolean breakBuildBasedOnSemanticVersioning
-
breakBuildBasedOnSemanticVersioningForMajorVersionZero
@Parameter(property="japicmp.breakBuildBasedOnSemanticVersioningForMajorVersionZero", required=false) private boolean breakBuildBasedOnSemanticVersioningForMajorVersionZero
-
projectBuildDir
@Parameter(property="project.build.directory", required=true) private java.io.File projectBuildDir
-
artifactFactory
@Component private org.apache.maven.artifact.factory.ArtifactFactory artifactFactory
-
repoSystem
@Component private org.eclipse.aether.RepositorySystem repoSystem
-
repoSession
@Parameter(defaultValue="${repositorySystemSession}", readonly=true) private org.eclipse.aether.RepositorySystemSession repoSession
-
remoteRepos
@Parameter(defaultValue="${project.remoteProjectRepositories}", readonly=true) private java.util.List<org.eclipse.aether.repository.RemoteRepository> remoteRepos
-
localRepository
@Parameter(defaultValue="${localRepository}") private org.apache.maven.artifact.repository.ArtifactRepository localRepository
-
artifactRepositories
@Parameter(defaultValue="${project.remoteArtifactRepositories}") private java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> artifactRepositories
-
mavenProject
@Parameter(defaultValue="${project}") private org.apache.maven.project.MavenProject mavenProject
-
mojoExecution
@Parameter(defaultValue="${mojoExecution}", readonly=true) private org.apache.maven.plugin.MojoExecution mojoExecution
-
versionRangeWithProjectVersion
@Parameter(defaultValue="(,${project.version})", readonly=true) private java.lang.String versionRangeWithProjectVersion
-
metadataSource
@Component private org.apache.maven.artifact.metadata.ArtifactMetadataSource metadataSource
-
options
private Options options
-
-
Method Detail
-
execute
public void execute() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoFailureException
-
executeWithParameters
Optional<XmlOutput> executeWithParameters(PluginParameters pluginParameters, MavenParameters mavenParameters) throws org.apache.maven.plugin.MojoFailureException, org.apache.maven.plugin.MojoExecutionException
- Throws:
org.apache.maven.plugin.MojoFailureException
org.apache.maven.plugin.MojoExecutionException
-
setUpOverrideCompatibilityChanges
private void setUpOverrideCompatibilityChanges(JarArchiveComparatorOptions comparatorOptions, PluginParameters pluginParameters) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
skipModule
private boolean skipModule(PluginParameters pluginParameters, MavenParameters mavenParameters)
-
getComparisonArtifact
private org.eclipse.aether.artifact.Artifact getComparisonArtifact(MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException, org.apache.maven.plugin.MojoExecutionException
- Throws:
org.apache.maven.plugin.MojoFailureException
org.apache.maven.plugin.MojoExecutionException
-
processArtifacResult
private void processArtifacResult(org.eclipse.aether.artifact.DefaultArtifact artifactVersion, org.eclipse.aether.resolution.ArtifactResult artifactResult, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
filterVersionPattern
private void filterVersionPattern(java.util.List<org.eclipse.aether.version.Version> availableVersions, PluginParameters pluginParameters) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
filterSnapshots
private void filterSnapshots(java.util.List<org.eclipse.aether.version.Version> versions)
-
populateArchivesListsFromParameters
private void populateArchivesListsFromParameters(PluginParameters pluginParameters, MavenParameters mavenParameters, java.util.List<JApiCmpArchive> oldArchives, java.util.List<JApiCmpArchive> newArchives) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
breakBuildIfNecessary
void breakBuildIfNecessary(java.util.List<JApiClass> jApiClasses, Parameter parameterParam, Options options, JarArchiveComparator jarArchiveComparator) throws org.apache.maven.plugin.MojoFailureException, org.apache.maven.plugin.MojoExecutionException
- Throws:
org.apache.maven.plugin.MojoFailureException
org.apache.maven.plugin.MojoExecutionException
-
breakBuildBasedOnSemanticVersioningForMajorVersionZero
private boolean breakBuildBasedOnSemanticVersioningForMajorVersionZero(Parameter parameterParam)
-
getOptions
Options getOptions(PluginParameters pluginParameters, MavenParameters mavenParameters) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
breakBuildOnModificationsParameter
private boolean breakBuildOnModificationsParameter(Parameter parameterParam)
-
breakBuildOnBinaryIncompatibleModifications
private boolean breakBuildOnBinaryIncompatibleModifications(Parameter parameterParam)
-
breakBuildOnSourceIncompatibleModifications
private boolean breakBuildOnSourceIncompatibleModifications(Parameter parameter)
-
breakBuildBasedOnSemanticVersioning
private boolean breakBuildBasedOnSemanticVersioning(Parameter parameter)
-
createJapiCmpBaseDir
private java.io.File createJapiCmpBaseDir(PluginParameters pluginParameters) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
generateDiffOutput
private void generateDiffOutput(MavenParameters mavenParameters, PluginParameters pluginParameters, Options options, java.util.List<JApiClass> jApiClasses, java.io.File jApiCmpBuildDir) throws java.io.IOException, org.apache.maven.plugin.MojoFailureException
- Throws:
java.io.IOException
org.apache.maven.plugin.MojoFailureException
-
generateXmlOutput
private XmlOutput generateXmlOutput(java.util.List<JApiClass> jApiClasses, java.io.File jApiCmpBuildDir, Options options, MavenParameters mavenParameters, PluginParameters pluginParameters) throws java.io.IOException
- Throws:
java.io.IOException
-
skipHtmlReport
private boolean skipHtmlReport(PluginParameters pluginParameters)
-
skipXmlReport
private boolean skipXmlReport(PluginParameters pluginParameters)
-
createFilename
private java.lang.String createFilename(MavenParameters mavenParameters)
-
setUpClassPath
private void setUpClassPath(JarArchiveComparatorOptions comparatorOptions, PluginParameters pluginParameters, MavenParameters mavenParameters) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
setUpClassPathUsingMavenProject
private void setUpClassPathUsingMavenProject(JarArchiveComparatorOptions comparatorOptions, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
mapPackaging
private java.lang.String mapPackaging(java.lang.String packaging, boolean condition, java.lang.String mappedPackaging)
-
handleMissingArtifactFile
private void handleMissingArtifactFile(PluginParameters pluginParameters, org.eclipse.aether.artifact.Artifact artifact)
-
toDescriptor
private java.lang.String toDescriptor(org.eclipse.aether.artifact.Artifact artifact)
-
retrieveFileFromConfiguration
private java.util.List<JApiCmpArchive> retrieveFileFromConfiguration(DependencyDescriptor dependencyDescriptor, java.lang.String parameterName, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
retrieveFileFromConfiguration
private java.util.List<JApiCmpArchive> retrieveFileFromConfiguration(Version version, java.lang.String parameterName, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
resolveConfigurationFileToFile
private java.util.List<JApiCmpArchive> resolveConfigurationFileToFile(java.lang.String parameterName, ConfigurationFile configurationFile, JApiCmpMojo.ConfigurationVersion configurationVersion, PluginParameters pluginParameters) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
resolveDependencyToFile
private java.util.List<JApiCmpArchive> resolveDependencyToFile(java.lang.String parameterName, Dependency dependency, MavenParameters mavenParameters, boolean transitively, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
guessVersion
private java.lang.String guessVersion(java.io.File file)
-
ignoreMissingArtifact
private boolean ignoreMissingArtifact(PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
-
ignoreNonResolvableArtifacts
private boolean ignoreNonResolvableArtifacts(PluginParameters pluginParameters)
-
ignoreMissingOldVersion
private boolean ignoreMissingOldVersion(PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
-
ignoreMissingNewVersion
private boolean ignoreMissingNewVersion(PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion)
-
ignoreMissingOldVersion
private boolean ignoreMissingOldVersion(PluginParameters pluginParameters)
-
ignoreMissingNewVersion
private boolean ignoreMissingNewVersion(PluginParameters pluginParameters)
-
writeToFile
private void writeToFile(java.lang.String output, java.io.File outputfile) throws org.apache.maven.plugin.MojoFailureException, java.io.IOException
- Throws:
org.apache.maven.plugin.MojoFailureException
java.io.IOException
-
resolveArtifact
private java.util.Set<org.eclipse.aether.artifact.Artifact> resolveArtifact(Dependency dependency, MavenParameters mavenParameters, boolean transitively, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
resolveArtifact
private java.util.Set<org.eclipse.aether.artifact.Artifact> resolveArtifact(org.eclipse.aether.artifact.Artifact artifact, MavenParameters mavenParameters, PluginParameters pluginParameters, JApiCmpMojo.ConfigurationVersion configurationVersion) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
isPomModuleNeedingSkip
private boolean isPomModuleNeedingSkip(PluginParameters pluginParameters, MavenParameters mavenParameters)
-
notNull
private static <T> T notNull(T value, java.lang.String msg) throws org.apache.maven.plugin.MojoFailureException
- Throws:
org.apache.maven.plugin.MojoFailureException
-
-