mirror of https://github.com/apache/maven.git
MNG-8072 - add ConsumerPomFile methods
Currently there is some vague definition of a "build pom" versus a "consumer pom": https://maven.apache.org/studies/consumer-pom/ https://cwiki.apache.org/confluence/display/MAVEN/Build+vs+Consumer+POM there are also some plugins around to work with this e.g. https://tycho.eclipseprojects.io/doc/latest/tycho-packaging-plugin/update-consumer-pom-mojo.html https://www.mojohaus.org/flatten-maven-plugin/plugin-info.html but there are some issues: Maven makes some assumptions about its "file", e.g setting the file changes the basedir Even though there is a setPomFile method that do not change the basedir e.g. a parent ref by default would be broken once we change the file, there is a mismatch between the pom on disk and the model it is not possible for a plugin to know the original file and the consumer file, e.g. if I want to deploy the original file e.g. with classifier "pom-build" because of this usually "consumer pom plugins" generate the the new pom to a new file in the project root, where it actually not belongs to and leaves the file even after mvn clean if no special actions are taken. This enhance the MavenProject with one more method set/getConsumerPom that fills this gap, then plugins working on the consumer pom can set the file there and where it then is used by other plugins.
This commit is contained in:
parent
f860a8693d
commit
aac4d9a5bb
|
@ -103,6 +103,8 @@ public class MavenProject implements Cloneable {
|
|||
|
||||
private File file;
|
||||
|
||||
private File consumerPomFile;
|
||||
|
||||
private File basedir;
|
||||
|
||||
private Set<Artifact> resolvedArtifacts;
|
||||
|
@ -256,6 +258,17 @@ public class MavenProject implements Cloneable {
|
|||
this.file = file;
|
||||
}
|
||||
|
||||
public void setConsumerPomFile(File file) {
|
||||
this.consumerPomFile = file;
|
||||
}
|
||||
|
||||
public File getConsumerPomFile() {
|
||||
if (consumerPomFile == null) {
|
||||
return getFile();
|
||||
}
|
||||
return consumerPomFile;
|
||||
}
|
||||
|
||||
public File getBasedir() {
|
||||
return basedir;
|
||||
}
|
||||
|
@ -784,6 +797,7 @@ public class MavenProject implements Cloneable {
|
|||
* @deprecated Please use {@link MavenProjectHelper}
|
||||
* @throws DuplicateArtifactAttachmentException will never happen but leave it for backward compatibility
|
||||
*/
|
||||
@Deprecated
|
||||
public void addAttachedArtifact(Artifact artifact) throws DuplicateArtifactAttachmentException {
|
||||
// if already there we remove it and add again
|
||||
int index = attachedArtifacts.indexOf(artifact);
|
||||
|
@ -1026,6 +1040,7 @@ public class MavenProject implements Cloneable {
|
|||
|
||||
// copy fields
|
||||
file = project.file;
|
||||
this.consumerPomFile = project.consumerPomFile;
|
||||
basedir = project.basedir;
|
||||
|
||||
// don't need a deep copy, they don't get modified or added/removed to/from - but make them unmodifiable to be
|
||||
|
|
Loading…
Reference in New Issue