Writing an own ChangeRecorder
In order to create an own ChangeRecorder you must implement ChangeRecorder interface.
Write code
import java.io.IOException;
import javax.inject.Named;
import java.nio.file.Path;
import org.codehaus.mojo.versions.api.recording.DependencyChangeRecord;
import org.codehaus.mojo.versions.api.recording.PropertyChangeRecord;
import org.codehaus.mojo.versions.api.recording.ChangeRecorder;
@Named("my-recorder")
public class MyChangeRecorder implements ChangeRecorder {
@Override
public final void recordChange(DependencyChangeRecord changeRecord) {
// your code here
}
@Override
public final void recordChange(PropertyChangeRecord changeRecord) {
// your code here
}
@Override
public final void writeReport(Path outputPath) throws IOException {
// your code here
}
}
Changerecoder
is stateful component, so you must not add Singleton
annotation to it.
Using extension
Plugin configuration:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>your.group</groupId>
<artifactId>your-project</artifactId>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.18.0</version>
<configuration>
<!-- your component name -->
<changeRecorderFormat>my-recorder</changeRecorderFormat>
<changeRecorderOutputFile>${project.build.directory}/my-versions-changes.txt</changeRecorderOutputFile>
</configuration>
<dependencies>
<dependency>
<!-- add your extension as plugin dependency -->
<groupId>your.group</groupId>
<artifactId>your-extension</artifactId>
<version>ext.version</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Now execution like:
mvn versions:update-properties
will generate your custom report.