This is an automated email from the ASF dual-hosted git repository. rfscholte pushed a commit to branch MNG-4660 in repository https://gitbox.apache.org/repos/asf/maven.git
commit d29b7155614d2a5126d527c7c3e426f55c547667 Author: Maarten Mulders <maart...@infosupport.com> AuthorDate: Fri Feb 14 12:51:16 2020 +0100 Make ReactorReader aware of possible previous built artifacts --- .../main/java/org/apache/maven/ReactorReader.java | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/ReactorReader.java b/maven-core/src/main/java/org/apache/maven/ReactorReader.java index f840cb5..7c52ff2 100644 --- a/maven-core/src/main/java/org/apache/maven/ReactorReader.java +++ b/maven-core/src/main/java/org/apache/maven/ReactorReader.java @@ -157,12 +157,18 @@ class ReactorReader } Artifact projectArtifact = findMatchingArtifact( project, artifact ); + File packagedArtifactFile = determinePreviouslyPackagedArtifactFile( project, projectArtifact ); if ( hasArtifactFileFromPackagePhase( projectArtifact ) ) { return projectArtifact.getFile(); } - else if ( !hasBeenPackaged( project ) ) + // Check whether an earlier Maven run might have produced an artifact that is still on disk. + else if ( packagedArtifactFile != null && packagedArtifactFile.exists() ) + { + return packagedArtifactFile; + } + else if ( !hasBeenPackagedDuringThisSession( project ) ) { // fallback to loose class files only if artifacts haven't been packaged yet // and only for plain old jars. Not war files, not ear files, not anything else. @@ -189,12 +195,23 @@ class ReactorReader return null; } + private File determinePreviouslyPackagedArtifactFile( MavenProject project, Artifact artifact ) + { + if ( artifact == null ) + { + return null; + } + + String fileName = String.format( "%s.%s", project.getBuild().getFinalName(), artifact.getExtension() ); + return new File( project.getBuild().getDirectory(), fileName ); + } + private boolean hasArtifactFileFromPackagePhase( Artifact projectArtifact ) { return projectArtifact != null && projectArtifact.getFile() != null && projectArtifact.getFile().exists(); } - private boolean hasBeenPackaged( MavenProject project ) + private boolean hasBeenPackagedDuringThisSession( MavenProject project ) { return project.hasLifecyclePhase( "package" ) || project.hasLifecyclePhase( "install" ) || project.hasLifecyclePhase( "deploy" );