@@ -411,6 +411,7 @@ private void populateArchivesListsFromParameters(PluginParameters pluginParamete
411411 throw new MojoFailureException (message );
412412 }
413413 }
414+ getLog ().debug ("oldArchives=" + oldArchives + " newArchives=" + newArchives );
414415 }
415416
416417 void breakBuildIfNecessary (List <JApiClass > jApiClasses , Parameter parameterParam , Options options , JarArchiveComparator jarArchiveComparator ) throws MojoFailureException , MojoExecutionException {
@@ -657,6 +658,7 @@ private void setUpClassPath(JarArchiveComparatorOptions comparatorOptions, Plugi
657658 "separate classpath for the new and old version." );
658659 } else {
659660 if (getLog ().isDebugEnabled ()) {
661+ // TODO should perhaps still use TWO_SEPARATE_CLASSPATHS and add dependencies to both?
660662 getLog ().debug ("Element <dependencies/> found. Using " + JApiCli .ClassPathMode .ONE_COMMON_CLASSPATH );
661663 }
662664 for (Dependency dependency : pluginParameters .getDependenciesParam ()) {
@@ -691,18 +693,41 @@ private void setUpClassPath(JarArchiveComparatorOptions comparatorOptions, Plugi
691693 comparatorOptions .setClassPathMode (JarArchiveComparatorOptions .ClassPathMode .TWO_SEPARATE_CLASSPATHS );
692694 } else {
693695 if (getLog ().isDebugEnabled ()) {
694- getLog ().debug ("None of the elements <oldClassPathDependencies/>, <newClassPathDependencies/> or <dependencies/> found. Using " + JApiCli .ClassPathMode .ONE_COMMON_CLASSPATH );
696+ getLog ().debug ("None of the elements <oldClassPathDependencies/>, <newClassPathDependencies/> or <dependencies/> found. Using " + JApiCli .ClassPathMode .TWO_SEPARATE_CLASSPATHS );
695697 }
696- comparatorOptions .setClassPathMode (JarArchiveComparatorOptions .ClassPathMode .ONE_COMMON_CLASSPATH );
698+ comparatorOptions .setClassPathMode (JarArchiveComparatorOptions .ClassPathMode .TWO_SEPARATE_CLASSPATHS );
697699 }
698700 }
699701 }
700702 setUpClassPathUsingMavenProject (comparatorOptions , mavenParameters , pluginParameters , ConfigurationVersion .NEW );
703+ getLog ().debug ("mode=" + comparatorOptions .getClassPathMode () + " classPathEntries=" + comparatorOptions .getClassPathEntries () + " oldClassPath=" + comparatorOptions .getOldClassPath () + " newClassPath=" + comparatorOptions .getNewClassPath ());
701704 }
702705
703706 private void setUpClassPathUsingMavenProject (JarArchiveComparatorOptions comparatorOptions , MavenParameters mavenParameters , PluginParameters pluginParameters , ConfigurationVersion configurationVersion ) throws MojoFailureException {
707+ List <String > newClassPath ;
708+ if (comparatorOptions .getClassPathMode () == JarArchiveComparatorOptions .ClassPathMode .TWO_SEPARATE_CLASSPATHS ) {
709+ if (pluginParameters .getOldVersionParam () == null && pluginParameters .getOldVersionsParam () == null ) {
710+ try {
711+ // TODO rather than calling getComparisonArtifact again, populateArchivesListsFromParameters should compute the old CP for various modes
712+ Artifact comparisonArtifact = getComparisonArtifact (mavenParameters , pluginParameters );
713+ if (comparisonArtifact .getVersion () != null ) {
714+ Set <Artifact > artifacts = resolveArtifact (comparisonArtifact , mavenParameters , true , pluginParameters , ConfigurationVersion .OLD );
715+ setUpClassPathEntries (artifacts , comparatorOptions .getOldClassPath (), mavenParameters , pluginParameters , configurationVersion );
716+ }
717+ } catch (MojoExecutionException e ) {
718+ throw new MojoFailureException ("Computing and resolving comparison artifact failed: " + e .getMessage (), e );
719+ }
720+ }
721+ newClassPath = comparatorOptions .getNewClassPath ();
722+ } else {
723+ newClassPath = comparatorOptions .getClassPathEntries ();
724+ }
704725 notNull (mavenParameters .getMavenProject (), "Maven parameter mavenProject should be provided by maven container." );
705726 Set <Artifact > dependencyArtifacts = mavenParameters .getMavenProject ().getArtifacts ();
727+ setUpClassPathEntries (dependencyArtifacts , newClassPath , mavenParameters , pluginParameters , configurationVersion );
728+ }
729+
730+ private void setUpClassPathEntries (Set <Artifact > dependencyArtifacts , List <String > classPath , MavenParameters mavenParameters , PluginParameters pluginParameters , ConfigurationVersion configurationVersion ) throws MojoFailureException {
706731 Set <String > classPathEntries = new HashSet <>();
707732 for (Artifact artifact : dependencyArtifacts ) {
708733 String scope = artifact .getScope ();
@@ -724,10 +749,8 @@ private void setUpClassPathUsingMavenProject(JarArchiveComparatorOptions compara
724749 }
725750 }
726751 }
727- for (String classPathEntry : classPathEntries ) {
728- comparatorOptions .getClassPathEntries ().add (classPathEntry );
729- }
730- }
752+ classPath .addAll (classPathEntries );
753+ }
731754
732755 private void handleMissingArtifactFile (PluginParameters pluginParameters , Artifact artifact ) {
733756 if (artifact .isOptional ()) {
0 commit comments