Package japicmp.maven

Class 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
    • Field Detail

      • oldVersion

        @Parameter(required=false)
        private Version oldVersion
      • newVersion

        @Parameter(required=false)
        private Version newVersion
      • 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
    • Constructor Detail

      • JApiCmpMojo

        public JApiCmpMojo()
    • 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
      • 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
      • skipHtmlReport

        private boolean skipHtmlReport​(PluginParameters pluginParameters)
      • skipXmlReport

        private boolean skipXmlReport​(PluginParameters pluginParameters)
      • createFilename

        private java.lang.String createFilename​(MavenParameters mavenParameters)
      • 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)
      • guessVersion

        private java.lang.String guessVersion​(java.io.File file)
      • ignoreNonResolvableArtifacts

        private boolean ignoreNonResolvableArtifacts​(PluginParameters pluginParameters)
      • 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
      • notNull

        private static <T> T notNull​(T value,
                                     java.lang.String msg)
                              throws org.apache.maven.plugin.MojoFailureException
        Throws:
        org.apache.maven.plugin.MojoFailureException