You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2023/01/21 06:12:42 UTC

[logging-log4j-tools] 01/01: #20 - Add Maven changelog plugins

This is an automated email from the ASF dual-hosted git repository.

rgoers pushed a commit to branch PR20
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 1642bc8ee6210fc75dff3e9f319f853e76d65ee5
Author: Ralph Goers <rg...@apache.org>
AuthorDate: Fri Jan 20 23:08:37 2023 -0700

    #20 - Add Maven changelog plugins
---
 .../changelog/exporter/ChangelogExporter.java      |   7 +-
 .../changelog/exporter/ChangelogExporterArgs.java  |   6 +-
 .../changelog/releaser/ChangelogReleaser.java      |   6 +-
 .../changelog/releaser/ChangelogReleaserArgs.java  |   6 +-
 log4j-maven-changelog-plugin/pom.xml               | 142 +++++++++++++++++++++
 .../java/org/apache/logging/log4j/ExportMojo.java  |  68 ++++++++++
 .../java/org/apache/logging/log4j/ReleaseMojo.java |  71 +++++++++++
 pom.xml                                            |   4 +-
 8 files changed, 299 insertions(+), 11 deletions(-)

diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
index 236dcea..82c0c17 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
@@ -34,10 +34,10 @@ public final class ChangelogExporter {
     private ChangelogExporter() {}
 
     public static void main(final String[] mainArgs) {
+        performExport(ChangelogExporterArgs.fromSystemProperties());
+    }
 
-        // Read arguments
-        final ChangelogExporterArgs args = ChangelogExporterArgs.fromSystemProperties();
-
+    public static void performExport(final ChangelogExporterArgs args) {
         // Find release directories
         final List<Path> releaseDirectories = findReleaseDirectories(args);
         final int releaseDirectoryCount = releaseDirectories.size();
@@ -107,7 +107,6 @@ public final class ChangelogExporter {
         // Export the release index
         final Path changelogIndexTemplateFile = ChangelogFiles.indexTemplateFile(args.changelogDirectory);
         exportIndex(args.outputDirectory, changelogReleases, changelogIndexTemplateFile);
-
     }
 
     private static List<Path> findReleaseDirectories(ChangelogExporterArgs args) {
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
index 8d79d9a..32a4878 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
@@ -20,7 +20,7 @@ import java.nio.file.Path;
 
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
 
-final class ChangelogExporterArgs {
+public final class ChangelogExporterArgs {
 
     final Path changelogDirectory;
 
@@ -37,4 +37,8 @@ final class ChangelogExporterArgs {
         return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
     }
 
+    public static ChangelogExporterArgs fromArgs(final Path changelogDirectory, final Path outputDirectory) {
+        return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
+    }
+
 }
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
index 55b4fca..02268b3 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
@@ -35,9 +35,10 @@ public final class ChangelogReleaser {
 
     public static void main(final String[] mainArgs) throws Exception {
 
-        // Read arguments
-        final ChangelogReleaserArgs args = ChangelogReleaserArgs.fromSystemProperties();
+        performRelease(ChangelogReleaserArgs.fromSystemProperties());
+    }
 
+    public static void performRelease(final ChangelogReleaserArgs args) throws Exception {
         // Read the release date and version
         final String releaseDate = ISO_DATE.format(LocalDate.now());
         final int releaseVersionMajor = VersionUtils.versionMajor(args.releaseVersion);
@@ -53,7 +54,6 @@ public final class ChangelogReleaser {
 
         // Write the release changelog template
         populateReleaseChangelogTemplateFile(unreleasedDirectory, releaseDirectory);
-
     }
 
     private static void populateChangelogEntryFiles(
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
index f6bf6cb..7a47c3c 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
@@ -22,7 +22,7 @@ import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBl
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankStringProperty;
 import static org.apache.logging.log4j.changelog.util.VersionUtils.requireSemanticVersioning;
 
-final class ChangelogReleaserArgs {
+public final class ChangelogReleaserArgs {
 
     final Path changelogDirectory;
 
@@ -41,4 +41,8 @@ final class ChangelogReleaserArgs {
         return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
     }
 
+    public static ChangelogReleaserArgs fromArgs(final Path changelogDirectory, final String releaseVersion) {
+        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
+    }
+
 }
diff --git a/log4j-maven-changelog-plugin/pom.xml b/log4j-maven-changelog-plugin/pom.xml
new file mode 100644
index 0000000..7dc4ea6
--- /dev/null
+++ b/log4j-maven-changelog-plugin/pom.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      https://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j-tools-parent</artifactId>
+    <version>${revision}</version>
+    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
+  </parent>
+  <artifactId>log4j-maven-changelog-plugin</artifactId>
+  <packaging>maven-plugin</packaging>
+
+  <name>log4j-maven-changelog-plugin Maven Plugin</name>
+
+  <!-- FIXME change it to the project's website -->
+  <url>http://maven.apache.org</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-utils</artifactId>
+        <version>3.3.1</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>3.8.7</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <version>3.6.4</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>3.3.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-changelog</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.8.2</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <version>3.5</version>
+        <configuration>
+          <goalPrefix>log4j-changelog</goalPrefix>
+          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+          <mojoDependencies>
+          </mojoDependencies>
+        </configuration>
+        <executions>
+          <execution>
+            <id>mojo-descriptor</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>run-its</id>
+      <build>
+
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-invoker-plugin</artifactId>
+            <version>1.7</version>
+            <configuration>
+              <debug>true</debug>
+              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
+              <pomIncludes>
+                <pomInclude>*/pom.xml</pomInclude>
+              </pomIncludes>
+              <postBuildHookScript>verify</postBuildHookScript>
+              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
+              <settingsFile>src/it/settings.xml</settingsFile>
+              <goals>
+                <goal>clean</goal>
+                <goal>test-compile</goal>
+              </goals>
+            </configuration>
+            <executions>
+              <execution>
+                <id>integration-test</id>
+                <goals>
+                  <goal>install</goal>
+                  <goal>integration-test</goal>
+                  <goal>verify</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+
+      </build>
+    </profile>
+  </profiles>
+</project>
diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
new file mode 100644
index 0000000..99919a5
--- /dev/null
+++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+
+import org.apache.logging.log4j.changelog.exporter.ChangelogExporter;
+import org.apache.logging.log4j.changelog.exporter.ChangelogExporterArgs;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+/**
+ * Goal which creates a changelog.
+ */
+@Mojo(name = "export", defaultPhase = LifecyclePhase.PRE_SITE)
+public class ExportMojo extends AbstractMojo {
+    /**
+     * Location of the file.
+     */
+    @Parameter(defaultValue = "${project.build.directory}/generated-sources/site/asciidoc/changelog",
+            property = "outputDir", required = true)
+    private File outputDirectory;
+
+    /**
+     * Location of the file.
+     */
+    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
+    private File changeLogDirectory;
+
+    public void execute() throws MojoExecutionException {
+        ChangelogExporter.performExport(ChangelogExporterArgs.fromArgs(changeLogDirectory.toPath(),
+                outputDirectory.toPath()));
+    }
+}
diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
new file mode 100644
index 0000000..001a692
--- /dev/null
+++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.File;
+
+import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
+import org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+/**
+ * Goal which creates a changelog.
+ */
+@Mojo(name = "release", defaultPhase = LifecyclePhase.PRE_SITE)
+public class ReleaseMojo extends AbstractMojo {
+    /**
+     * Location of the file.
+     */
+    @Parameter(property = "version", required = true)
+    private String releaseVersion;
+
+    /**
+     * Location of the file.
+     */
+    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
+    private File changeLogDirectory;
+
+    public void execute() throws MojoExecutionException {
+        try {
+            ChangelogReleaser.performRelease(ChangelogReleaserArgs.fromArgs(changeLogDirectory.toPath(),
+                    releaseVersion));
+        } catch (Exception ex) {
+            throw new MojoExecutionException("Error performing release", ex);
+        }
+    }
+}
diff --git a/pom.xml b/pom.xml
index c7c76fa..5abb06e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,13 +48,13 @@
 
     <!-- Modules here must have a corresponding entry in `dependencyManagement > dependencies` block below! -->
     <module>log4j-changelog</module>
-
+    <module>log4j-maven-changelog-plugin</module>
   </modules>
 
   <properties>
 
     <!-- project version -->
-    <revision>0.1.0-SNAPSHOT</revision>
+    <revision>0.2.0-SNAPSHOT</revision>
 
     <!-- `minimalJavaBuildVersion` is employed by `org.apache:apache`, which is the parent of `org.apache.logging:logging-parent`, which is the parent of us.
          `minimalJavaBuildVersion` is used for enforcing the compiler version.


Re: [logging-log4j-tools] 01/01: #20 - Add Maven changelog plugins

Posted by Matt Sicker <ma...@musigma.org>.
License headers are collapsed for me, too. I usually only notice them when looking at a diff or PR.

> On Jan 23, 2023, at 8:52 AM, Ralph Goers <ra...@dslextreme.com> wrote:
> 
> They were generated by the Maven Archetype. IntelliJ collapses them for me so I didn’t notice.
> 
> Ralph
> 
>> On Jan 22, 2023, at 3:29 PM, Matt Sicker <ma...@musigma.org> wrote:
>> 
>> Are these copyrights really supposed to be so ancient? The copyright year goes in the NOTICE.txt file these days anyways, so those could be simplified.
>> —
>> Matt Sicker
>> 
>>> On Jan 21, 2023, at 00:12, rgoers@apache.org wrote:
>>> 
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> rgoers pushed a commit to branch PR20
>>> in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
>>> 
>>> commit 1642bc8ee6210fc75dff3e9f319f853e76d65ee5
>>> Author: Ralph Goers <rg...@apache.org>
>>> AuthorDate: Fri Jan 20 23:08:37 2023 -0700
>>> 
>>>  #20 - Add Maven changelog plugins
>>> ---
>>> .../changelog/exporter/ChangelogExporter.java      |   7 +-
>>> .../changelog/exporter/ChangelogExporterArgs.java  |   6 +-
>>> .../changelog/releaser/ChangelogReleaser.java      |   6 +-
>>> .../changelog/releaser/ChangelogReleaserArgs.java  |   6 +-
>>> log4j-maven-changelog-plugin/pom.xml               | 142 +++++++++++++++++++++
>>> .../java/org/apache/logging/log4j/ExportMojo.java  |  68 ++++++++++
>>> .../java/org/apache/logging/log4j/ReleaseMojo.java |  71 +++++++++++
>>> pom.xml                                            |   4 +-
>>> 8 files changed, 299 insertions(+), 11 deletions(-)
>>> 
>>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
>>> index 236dcea..82c0c17 100644
>>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
>>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
>>> @@ -34,10 +34,10 @@ public final class ChangelogExporter {
>>>   private ChangelogExporter() {}
>>> 
>>>   public static void main(final String[] mainArgs) {
>>> +        performExport(ChangelogExporterArgs.fromSystemProperties());
>>> +    }
>>> 
>>> -        // Read arguments
>>> -        final ChangelogExporterArgs args = ChangelogExporterArgs.fromSystemProperties();
>>> -
>>> +    public static void performExport(final ChangelogExporterArgs args) {
>>>       // Find release directories
>>>       final List<Path> releaseDirectories = findReleaseDirectories(args);
>>>       final int releaseDirectoryCount = releaseDirectories.size();
>>> @@ -107,7 +107,6 @@ public final class ChangelogExporter {
>>>       // Export the release index
>>>       final Path changelogIndexTemplateFile = ChangelogFiles.indexTemplateFile(args.changelogDirectory);
>>>       exportIndex(args.outputDirectory, changelogReleases, changelogIndexTemplateFile);
>>> -
>>>   }
>>> 
>>>   private static List<Path> findReleaseDirectories(ChangelogExporterArgs args) {
>>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
>>> index 8d79d9a..32a4878 100644
>>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
>>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
>>> @@ -20,7 +20,7 @@ import java.nio.file.Path;
>>> 
>>> import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
>>> 
>>> -final class ChangelogExporterArgs {
>>> +public final class ChangelogExporterArgs {
>>> 
>>>   final Path changelogDirectory;
>>> 
>>> @@ -37,4 +37,8 @@ final class ChangelogExporterArgs {
>>>       return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
>>>   }
>>> 
>>> +    public static ChangelogExporterArgs fromArgs(final Path changelogDirectory, final Path outputDirectory) {
>>> +        return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
>>> +    }
>>> +
>>> }
>>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
>>> index 55b4fca..02268b3 100644
>>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
>>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
>>> @@ -35,9 +35,10 @@ public final class ChangelogReleaser {
>>> 
>>>   public static void main(final String[] mainArgs) throws Exception {
>>> 
>>> -        // Read arguments
>>> -        final ChangelogReleaserArgs args = ChangelogReleaserArgs.fromSystemProperties();
>>> +        performRelease(ChangelogReleaserArgs.fromSystemProperties());
>>> +    }
>>> 
>>> +    public static void performRelease(final ChangelogReleaserArgs args) throws Exception {
>>>       // Read the release date and version
>>>       final String releaseDate = ISO_DATE.format(LocalDate.now());
>>>       final int releaseVersionMajor = VersionUtils.versionMajor(args.releaseVersion);
>>> @@ -53,7 +54,6 @@ public final class ChangelogReleaser {
>>> 
>>>       // Write the release changelog template
>>>       populateReleaseChangelogTemplateFile(unreleasedDirectory, releaseDirectory);
>>> -
>>>   }
>>> 
>>>   private static void populateChangelogEntryFiles(
>>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
>>> index f6bf6cb..7a47c3c 100644
>>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
>>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
>>> @@ -22,7 +22,7 @@ import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBl
>>> import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankStringProperty;
>>> import static org.apache.logging.log4j.changelog.util.VersionUtils.requireSemanticVersioning;
>>> 
>>> -final class ChangelogReleaserArgs {
>>> +public final class ChangelogReleaserArgs {
>>> 
>>>   final Path changelogDirectory;
>>> 
>>> @@ -41,4 +41,8 @@ final class ChangelogReleaserArgs {
>>>       return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
>>>   }
>>> 
>>> +    public static ChangelogReleaserArgs fromArgs(final Path changelogDirectory, final String releaseVersion) {
>>> +        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
>>> +    }
>>> +
>>> }
>>> diff --git a/log4j-maven-changelog-plugin/pom.xml b/log4j-maven-changelog-plugin/pom.xml
>>> new file mode 100644
>>> index 0000000..7dc4ea6
>>> --- /dev/null
>>> +++ b/log4j-maven-changelog-plugin/pom.xml
>>> @@ -0,0 +1,142 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +<!--
>>> +  Licensed to the Apache Software Foundation (ASF) under one or more
>>> +  contributor license agreements. See the NOTICE file distributed with
>>> +  this work for additional information regarding copyright ownership.
>>> +  The ASF licenses this file to You under the Apache License, Version 2.0
>>> +  (the "License"); you may not use this file except in compliance with
>>> +  the License. You may obtain a copy of the License at
>>> +
>>> +      https://www.apache.org/licenses/LICENSE-2.0
>>> +
>>> +  Unless required by applicable law or agreed to in writing, software
>>> +  distributed under the License is distributed on an "AS IS" BASIS,
>>> +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>> +  See the License for the specific language governing permissions and
>>> +  limitations under the License.
>>> +-->
>>> +<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>>> +  <modelVersion>4.0.0</modelVersion>
>>> +  <parent>
>>> +    <groupId>org.apache.logging.log4j</groupId>
>>> +    <artifactId>log4j-tools-parent</artifactId>
>>> +    <version>${revision}</version>
>>> +    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
>>> +  </parent>
>>> +  <artifactId>log4j-maven-changelog-plugin</artifactId>
>>> +  <packaging>maven-plugin</packaging>
>>> +
>>> +  <name>log4j-maven-changelog-plugin Maven Plugin</name>
>>> +
>>> +  <!-- FIXME change it to the project's website -->
>>> +  <url>http://maven.apache.org</url>
>>> +
>>> +  <properties>
>>> +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>>> +  </properties>
>>> +
>>> +  <dependencyManagement>
>>> +    <dependencies>
>>> +      <dependency>
>>> +        <groupId>org.codehaus.plexus</groupId>
>>> +        <artifactId>plexus-utils</artifactId>
>>> +        <version>3.3.1</version>
>>> +      </dependency>
>>> +    </dependencies>
>>> +  </dependencyManagement>
>>> +
>>> +  <dependencies>
>>> +    <dependency>
>>> +      <groupId>org.apache.maven</groupId>
>>> +      <artifactId>maven-plugin-api</artifactId>
>>> +      <version>3.8.7</version>
>>> +    </dependency>
>>> +    <dependency>
>>> +      <groupId>org.apache.maven.plugin-tools</groupId>
>>> +      <artifactId>maven-plugin-annotations</artifactId>
>>> +      <version>3.6.4</version>
>>> +      <scope>provided</scope>
>>> +    </dependency>
>>> +    <dependency>
>>> +      <groupId>org.codehaus.plexus</groupId>
>>> +      <artifactId>plexus-utils</artifactId>
>>> +      <version>3.3.1</version>
>>> +    </dependency>
>>> +    <dependency>
>>> +      <groupId>org.apache.logging.log4j</groupId>
>>> +      <artifactId>log4j-changelog</artifactId>
>>> +      <version>${project.version}</version>
>>> +    </dependency>
>>> +    <dependency>
>>> +      <groupId>junit</groupId>
>>> +      <artifactId>junit</artifactId>
>>> +      <version>4.8.2</version>
>>> +      <scope>test</scope>
>>> +    </dependency>
>>> +  </dependencies>
>>> +
>>> +  <build>
>>> +    <plugins>
>>> +      <plugin>
>>> +        <groupId>org.apache.maven.plugins</groupId>
>>> +        <artifactId>maven-plugin-plugin</artifactId>
>>> +        <version>3.5</version>
>>> +        <configuration>
>>> +          <goalPrefix>log4j-changelog</goalPrefix>
>>> +          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
>>> +          <mojoDependencies>
>>> +          </mojoDependencies>
>>> +        </configuration>
>>> +        <executions>
>>> +          <execution>
>>> +            <id>mojo-descriptor</id>
>>> +            <goals>
>>> +              <goal>descriptor</goal>
>>> +            </goals>
>>> +          </execution>
>>> +        </executions>
>>> +      </plugin>
>>> +    </plugins>
>>> +  </build>
>>> +  <profiles>
>>> +    <profile>
>>> +      <id>run-its</id>
>>> +      <build>
>>> +
>>> +        <plugins>
>>> +          <plugin>
>>> +            <groupId>org.apache.maven.plugins</groupId>
>>> +            <artifactId>maven-invoker-plugin</artifactId>
>>> +            <version>1.7</version>
>>> +            <configuration>
>>> +              <debug>true</debug>
>>> +              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
>>> +              <pomIncludes>
>>> +                <pomInclude>*/pom.xml</pomInclude>
>>> +              </pomIncludes>
>>> +              <postBuildHookScript>verify</postBuildHookScript>
>>> +              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
>>> +              <settingsFile>src/it/settings.xml</settingsFile>
>>> +              <goals>
>>> +                <goal>clean</goal>
>>> +                <goal>test-compile</goal>
>>> +              </goals>
>>> +            </configuration>
>>> +            <executions>
>>> +              <execution>
>>> +                <id>integration-test</id>
>>> +                <goals>
>>> +                  <goal>install</goal>
>>> +                  <goal>integration-test</goal>
>>> +                  <goal>verify</goal>
>>> +                </goals>
>>> +              </execution>
>>> +            </executions>
>>> +          </plugin>
>>> +        </plugins>
>>> +
>>> +      </build>
>>> +    </profile>
>>> +  </profiles>
>>> +</project>
>>> diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
>>> new file mode 100644
>>> index 0000000..99919a5
>>> --- /dev/null
>>> +++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
>>> @@ -0,0 +1,68 @@
>>> +/*
>>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>>> + * contributor license agreements. See the NOTICE file distributed with
>>> + * this work for additional information regarding copyright ownership.
>>> + * The ASF licenses this file to You under the Apache license, Version 2.0
>>> + * (the "License"); you may not use this file except in compliance with
>>> + * the License. You may obtain a copy of the License at
>>> + *
>>> + *      http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing, software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>> + * See the license for the specific language governing permissions and
>>> + * limitations under the license.
>>> + */
>>> +package org.apache.logging.log4j;
>>> +
>>> +/*
>>> + * Copyright 2001-2005 The Apache Software Foundation.
>>> + *
>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + *
>>> + *      http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing, software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +import java.io.File;
>>> +
>>> +import org.apache.logging.log4j.changelog.exporter.ChangelogExporter;
>>> +import org.apache.logging.log4j.changelog.exporter.ChangelogExporterArgs;
>>> +
>>> +import org.apache.maven.plugin.AbstractMojo;
>>> +import org.apache.maven.plugin.MojoExecutionException;
>>> +import org.apache.maven.plugins.annotations.LifecyclePhase;
>>> +import org.apache.maven.plugins.annotations.Mojo;
>>> +import org.apache.maven.plugins.annotations.Parameter;
>>> +
>>> +/**
>>> + * Goal which creates a changelog.
>>> + */
>>> +@Mojo(name = "export", defaultPhase = LifecyclePhase.PRE_SITE)
>>> +public class ExportMojo extends AbstractMojo {
>>> +    /**
>>> +     * Location of the file.
>>> +     */
>>> +    @Parameter(defaultValue = "${project.build.directory}/generated-sources/site/asciidoc/changelog",
>>> +            property = "outputDir", required = true)
>>> +    private File outputDirectory;
>>> +
>>> +    /**
>>> +     * Location of the file.
>>> +     */
>>> +    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
>>> +    private File changeLogDirectory;
>>> +
>>> +    public void execute() throws MojoExecutionException {
>>> +        ChangelogExporter.performExport(ChangelogExporterArgs.fromArgs(changeLogDirectory.toPath(),
>>> +                outputDirectory.toPath()));
>>> +    }
>>> +}
>>> diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
>>> new file mode 100644
>>> index 0000000..001a692
>>> --- /dev/null
>>> +++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
>>> @@ -0,0 +1,71 @@
>>> +/*
>>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>>> + * contributor license agreements. See the NOTICE file distributed with
>>> + * this work for additional information regarding copyright ownership.
>>> + * The ASF licenses this file to You under the Apache license, Version 2.0
>>> + * (the "License"); you may not use this file except in compliance with
>>> + * the License. You may obtain a copy of the License at
>>> + *
>>> + *      http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing, software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>> + * See the license for the specific language governing permissions and
>>> + * limitations under the license.
>>> + */
>>> +package org.apache.logging.log4j;
>>> +
>>> +/*
>>> + * Copyright 2001-2005 The Apache Software Foundation.
>>> + *
>>> + * Licensed under the Apache License, Version 2.0 (the "License");
>>> + * you may not use this file except in compliance with the License.
>>> + * You may obtain a copy of the License at
>>> + *
>>> + *      http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + * Unless required by applicable law or agreed to in writing, software
>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>> + * See the License for the specific language governing permissions and
>>> + * limitations under the License.
>>> + */
>>> +
>>> +import java.io.File;
>>> +
>>> +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
>>> +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
>>> +
>>> +import org.apache.maven.plugin.AbstractMojo;
>>> +import org.apache.maven.plugin.MojoExecutionException;
>>> +import org.apache.maven.plugins.annotations.LifecyclePhase;
>>> +import org.apache.maven.plugins.annotations.Mojo;
>>> +import org.apache.maven.plugins.annotations.Parameter;
>>> +
>>> +/**
>>> + * Goal which creates a changelog.
>>> + */
>>> +@Mojo(name = "release", defaultPhase = LifecyclePhase.PRE_SITE)
>>> +public class ReleaseMojo extends AbstractMojo {
>>> +    /**
>>> +     * Location of the file.
>>> +     */
>>> +    @Parameter(property = "version", required = true)
>>> +    private String releaseVersion;
>>> +
>>> +    /**
>>> +     * Location of the file.
>>> +     */
>>> +    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
>>> +    private File changeLogDirectory;
>>> +
>>> +    public void execute() throws MojoExecutionException {
>>> +        try {
>>> +            ChangelogReleaser.performRelease(ChangelogReleaserArgs.fromArgs(changeLogDirectory.toPath(),
>>> +                    releaseVersion));
>>> +        } catch (Exception ex) {
>>> +            throw new MojoExecutionException("Error performing release", ex);
>>> +        }
>>> +    }
>>> +}
>>> diff --git a/pom.xml b/pom.xml
>>> index c7c76fa..5abb06e 100644
>>> --- a/pom.xml
>>> +++ b/pom.xml
>>> @@ -48,13 +48,13 @@
>>> 
>>>   <!-- Modules here must have a corresponding entry in `dependencyManagement > dependencies` block below! -->
>>>   <module>log4j-changelog</module>
>>> -
>>> +    <module>log4j-maven-changelog-plugin</module>
>>> </modules>
>>> 
>>> <properties>
>>> 
>>>   <!-- project version -->
>>> -    <revision>0.1.0-SNAPSHOT</revision>
>>> +    <revision>0.2.0-SNAPSHOT</revision>
>>> 
>>>   <!-- `minimalJavaBuildVersion` is employed by `org.apache:apache`, which is the parent of `org.apache.logging:logging-parent`, which is the parent of us.
>>>        `minimalJavaBuildVersion` is used for enforcing the compiler version.
>>> 
>> 
> 


Re: [logging-log4j-tools] 01/01: #20 - Add Maven changelog plugins

Posted by Ralph Goers <ra...@dslextreme.com>.
They were generated by the Maven Archetype. IntelliJ collapses them for me so I didn’t notice.

Ralph

> On Jan 22, 2023, at 3:29 PM, Matt Sicker <ma...@musigma.org> wrote:
> 
> Are these copyrights really supposed to be so ancient? The copyright year goes in the NOTICE.txt file these days anyways, so those could be simplified.
> —
> Matt Sicker
> 
>> On Jan 21, 2023, at 00:12, rgoers@apache.org wrote:
>> 
>> This is an automated email from the ASF dual-hosted git repository.
>> 
>> rgoers pushed a commit to branch PR20
>> in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
>> 
>> commit 1642bc8ee6210fc75dff3e9f319f853e76d65ee5
>> Author: Ralph Goers <rg...@apache.org>
>> AuthorDate: Fri Jan 20 23:08:37 2023 -0700
>> 
>>   #20 - Add Maven changelog plugins
>> ---
>> .../changelog/exporter/ChangelogExporter.java      |   7 +-
>> .../changelog/exporter/ChangelogExporterArgs.java  |   6 +-
>> .../changelog/releaser/ChangelogReleaser.java      |   6 +-
>> .../changelog/releaser/ChangelogReleaserArgs.java  |   6 +-
>> log4j-maven-changelog-plugin/pom.xml               | 142 +++++++++++++++++++++
>> .../java/org/apache/logging/log4j/ExportMojo.java  |  68 ++++++++++
>> .../java/org/apache/logging/log4j/ReleaseMojo.java |  71 +++++++++++
>> pom.xml                                            |   4 +-
>> 8 files changed, 299 insertions(+), 11 deletions(-)
>> 
>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
>> index 236dcea..82c0c17 100644
>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
>> @@ -34,10 +34,10 @@ public final class ChangelogExporter {
>>    private ChangelogExporter() {}
>> 
>>    public static void main(final String[] mainArgs) {
>> +        performExport(ChangelogExporterArgs.fromSystemProperties());
>> +    }
>> 
>> -        // Read arguments
>> -        final ChangelogExporterArgs args = ChangelogExporterArgs.fromSystemProperties();
>> -
>> +    public static void performExport(final ChangelogExporterArgs args) {
>>        // Find release directories
>>        final List<Path> releaseDirectories = findReleaseDirectories(args);
>>        final int releaseDirectoryCount = releaseDirectories.size();
>> @@ -107,7 +107,6 @@ public final class ChangelogExporter {
>>        // Export the release index
>>        final Path changelogIndexTemplateFile = ChangelogFiles.indexTemplateFile(args.changelogDirectory);
>>        exportIndex(args.outputDirectory, changelogReleases, changelogIndexTemplateFile);
>> -
>>    }
>> 
>>    private static List<Path> findReleaseDirectories(ChangelogExporterArgs args) {
>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
>> index 8d79d9a..32a4878 100644
>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
>> @@ -20,7 +20,7 @@ import java.nio.file.Path;
>> 
>> import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
>> 
>> -final class ChangelogExporterArgs {
>> +public final class ChangelogExporterArgs {
>> 
>>    final Path changelogDirectory;
>> 
>> @@ -37,4 +37,8 @@ final class ChangelogExporterArgs {
>>        return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
>>    }
>> 
>> +    public static ChangelogExporterArgs fromArgs(final Path changelogDirectory, final Path outputDirectory) {
>> +        return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
>> +    }
>> +
>> }
>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
>> index 55b4fca..02268b3 100644
>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
>> @@ -35,9 +35,10 @@ public final class ChangelogReleaser {
>> 
>>    public static void main(final String[] mainArgs) throws Exception {
>> 
>> -        // Read arguments
>> -        final ChangelogReleaserArgs args = ChangelogReleaserArgs.fromSystemProperties();
>> +        performRelease(ChangelogReleaserArgs.fromSystemProperties());
>> +    }
>> 
>> +    public static void performRelease(final ChangelogReleaserArgs args) throws Exception {
>>        // Read the release date and version
>>        final String releaseDate = ISO_DATE.format(LocalDate.now());
>>        final int releaseVersionMajor = VersionUtils.versionMajor(args.releaseVersion);
>> @@ -53,7 +54,6 @@ public final class ChangelogReleaser {
>> 
>>        // Write the release changelog template
>>        populateReleaseChangelogTemplateFile(unreleasedDirectory, releaseDirectory);
>> -
>>    }
>> 
>>    private static void populateChangelogEntryFiles(
>> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
>> index f6bf6cb..7a47c3c 100644
>> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
>> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
>> @@ -22,7 +22,7 @@ import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBl
>> import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankStringProperty;
>> import static org.apache.logging.log4j.changelog.util.VersionUtils.requireSemanticVersioning;
>> 
>> -final class ChangelogReleaserArgs {
>> +public final class ChangelogReleaserArgs {
>> 
>>    final Path changelogDirectory;
>> 
>> @@ -41,4 +41,8 @@ final class ChangelogReleaserArgs {
>>        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
>>    }
>> 
>> +    public static ChangelogReleaserArgs fromArgs(final Path changelogDirectory, final String releaseVersion) {
>> +        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
>> +    }
>> +
>> }
>> diff --git a/log4j-maven-changelog-plugin/pom.xml b/log4j-maven-changelog-plugin/pom.xml
>> new file mode 100644
>> index 0000000..7dc4ea6
>> --- /dev/null
>> +++ b/log4j-maven-changelog-plugin/pom.xml
>> @@ -0,0 +1,142 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +  Licensed to the Apache Software Foundation (ASF) under one or more
>> +  contributor license agreements. See the NOTICE file distributed with
>> +  this work for additional information regarding copyright ownership.
>> +  The ASF licenses this file to You under the Apache License, Version 2.0
>> +  (the "License"); you may not use this file except in compliance with
>> +  the License. You may obtain a copy of the License at
>> +
>> +      https://www.apache.org/licenses/LICENSE-2.0
>> +
>> +  Unless required by applicable law or agreed to in writing, software
>> +  distributed under the License is distributed on an "AS IS" BASIS,
>> +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> +  See the License for the specific language governing permissions and
>> +  limitations under the License.
>> +-->
>> +<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>> +  <modelVersion>4.0.0</modelVersion>
>> +  <parent>
>> +    <groupId>org.apache.logging.log4j</groupId>
>> +    <artifactId>log4j-tools-parent</artifactId>
>> +    <version>${revision}</version>
>> +    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
>> +  </parent>
>> +  <artifactId>log4j-maven-changelog-plugin</artifactId>
>> +  <packaging>maven-plugin</packaging>
>> +
>> +  <name>log4j-maven-changelog-plugin Maven Plugin</name>
>> +
>> +  <!-- FIXME change it to the project's website -->
>> +  <url>http://maven.apache.org</url>
>> +
>> +  <properties>
>> +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>> +  </properties>
>> +
>> +  <dependencyManagement>
>> +    <dependencies>
>> +      <dependency>
>> +        <groupId>org.codehaus.plexus</groupId>
>> +        <artifactId>plexus-utils</artifactId>
>> +        <version>3.3.1</version>
>> +      </dependency>
>> +    </dependencies>
>> +  </dependencyManagement>
>> +
>> +  <dependencies>
>> +    <dependency>
>> +      <groupId>org.apache.maven</groupId>
>> +      <artifactId>maven-plugin-api</artifactId>
>> +      <version>3.8.7</version>
>> +    </dependency>
>> +    <dependency>
>> +      <groupId>org.apache.maven.plugin-tools</groupId>
>> +      <artifactId>maven-plugin-annotations</artifactId>
>> +      <version>3.6.4</version>
>> +      <scope>provided</scope>
>> +    </dependency>
>> +    <dependency>
>> +      <groupId>org.codehaus.plexus</groupId>
>> +      <artifactId>plexus-utils</artifactId>
>> +      <version>3.3.1</version>
>> +    </dependency>
>> +    <dependency>
>> +      <groupId>org.apache.logging.log4j</groupId>
>> +      <artifactId>log4j-changelog</artifactId>
>> +      <version>${project.version}</version>
>> +    </dependency>
>> +    <dependency>
>> +      <groupId>junit</groupId>
>> +      <artifactId>junit</artifactId>
>> +      <version>4.8.2</version>
>> +      <scope>test</scope>
>> +    </dependency>
>> +  </dependencies>
>> +
>> +  <build>
>> +    <plugins>
>> +      <plugin>
>> +        <groupId>org.apache.maven.plugins</groupId>
>> +        <artifactId>maven-plugin-plugin</artifactId>
>> +        <version>3.5</version>
>> +        <configuration>
>> +          <goalPrefix>log4j-changelog</goalPrefix>
>> +          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
>> +          <mojoDependencies>
>> +          </mojoDependencies>
>> +        </configuration>
>> +        <executions>
>> +          <execution>
>> +            <id>mojo-descriptor</id>
>> +            <goals>
>> +              <goal>descriptor</goal>
>> +            </goals>
>> +          </execution>
>> +        </executions>
>> +      </plugin>
>> +    </plugins>
>> +  </build>
>> +  <profiles>
>> +    <profile>
>> +      <id>run-its</id>
>> +      <build>
>> +
>> +        <plugins>
>> +          <plugin>
>> +            <groupId>org.apache.maven.plugins</groupId>
>> +            <artifactId>maven-invoker-plugin</artifactId>
>> +            <version>1.7</version>
>> +            <configuration>
>> +              <debug>true</debug>
>> +              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
>> +              <pomIncludes>
>> +                <pomInclude>*/pom.xml</pomInclude>
>> +              </pomIncludes>
>> +              <postBuildHookScript>verify</postBuildHookScript>
>> +              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
>> +              <settingsFile>src/it/settings.xml</settingsFile>
>> +              <goals>
>> +                <goal>clean</goal>
>> +                <goal>test-compile</goal>
>> +              </goals>
>> +            </configuration>
>> +            <executions>
>> +              <execution>
>> +                <id>integration-test</id>
>> +                <goals>
>> +                  <goal>install</goal>
>> +                  <goal>integration-test</goal>
>> +                  <goal>verify</goal>
>> +                </goals>
>> +              </execution>
>> +            </executions>
>> +          </plugin>
>> +        </plugins>
>> +
>> +      </build>
>> +    </profile>
>> +  </profiles>
>> +</project>
>> diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
>> new file mode 100644
>> index 0000000..99919a5
>> --- /dev/null
>> +++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
>> @@ -0,0 +1,68 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>> + * contributor license agreements. See the NOTICE file distributed with
>> + * this work for additional information regarding copyright ownership.
>> + * The ASF licenses this file to You under the Apache license, Version 2.0
>> + * (the "License"); you may not use this file except in compliance with
>> + * the License. You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> + * See the license for the specific language governing permissions and
>> + * limitations under the license.
>> + */
>> +package org.apache.logging.log4j;
>> +
>> +/*
>> + * Copyright 2001-2005 The Apache Software Foundation.
>> + *
>> + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +import java.io.File;
>> +
>> +import org.apache.logging.log4j.changelog.exporter.ChangelogExporter;
>> +import org.apache.logging.log4j.changelog.exporter.ChangelogExporterArgs;
>> +
>> +import org.apache.maven.plugin.AbstractMojo;
>> +import org.apache.maven.plugin.MojoExecutionException;
>> +import org.apache.maven.plugins.annotations.LifecyclePhase;
>> +import org.apache.maven.plugins.annotations.Mojo;
>> +import org.apache.maven.plugins.annotations.Parameter;
>> +
>> +/**
>> + * Goal which creates a changelog.
>> + */
>> +@Mojo(name = "export", defaultPhase = LifecyclePhase.PRE_SITE)
>> +public class ExportMojo extends AbstractMojo {
>> +    /**
>> +     * Location of the file.
>> +     */
>> +    @Parameter(defaultValue = "${project.build.directory}/generated-sources/site/asciidoc/changelog",
>> +            property = "outputDir", required = true)
>> +    private File outputDirectory;
>> +
>> +    /**
>> +     * Location of the file.
>> +     */
>> +    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
>> +    private File changeLogDirectory;
>> +
>> +    public void execute() throws MojoExecutionException {
>> +        ChangelogExporter.performExport(ChangelogExporterArgs.fromArgs(changeLogDirectory.toPath(),
>> +                outputDirectory.toPath()));
>> +    }
>> +}
>> diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
>> new file mode 100644
>> index 0000000..001a692
>> --- /dev/null
>> +++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
>> @@ -0,0 +1,71 @@
>> +/*
>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>> + * contributor license agreements. See the NOTICE file distributed with
>> + * this work for additional information regarding copyright ownership.
>> + * The ASF licenses this file to You under the Apache license, Version 2.0
>> + * (the "License"); you may not use this file except in compliance with
>> + * the License. You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> + * See the license for the specific language governing permissions and
>> + * limitations under the license.
>> + */
>> +package org.apache.logging.log4j;
>> +
>> +/*
>> + * Copyright 2001-2005 The Apache Software Foundation.
>> + *
>> + * Licensed under the Apache License, Version 2.0 (the "License");
>> + * you may not use this file except in compliance with the License.
>> + * You may obtain a copy of the License at
>> + *
>> + *      http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + * Unless required by applicable law or agreed to in writing, software
>> + * distributed under the License is distributed on an "AS IS" BASIS,
>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> + * See the License for the specific language governing permissions and
>> + * limitations under the License.
>> + */
>> +
>> +import java.io.File;
>> +
>> +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
>> +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
>> +
>> +import org.apache.maven.plugin.AbstractMojo;
>> +import org.apache.maven.plugin.MojoExecutionException;
>> +import org.apache.maven.plugins.annotations.LifecyclePhase;
>> +import org.apache.maven.plugins.annotations.Mojo;
>> +import org.apache.maven.plugins.annotations.Parameter;
>> +
>> +/**
>> + * Goal which creates a changelog.
>> + */
>> +@Mojo(name = "release", defaultPhase = LifecyclePhase.PRE_SITE)
>> +public class ReleaseMojo extends AbstractMojo {
>> +    /**
>> +     * Location of the file.
>> +     */
>> +    @Parameter(property = "version", required = true)
>> +    private String releaseVersion;
>> +
>> +    /**
>> +     * Location of the file.
>> +     */
>> +    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
>> +    private File changeLogDirectory;
>> +
>> +    public void execute() throws MojoExecutionException {
>> +        try {
>> +            ChangelogReleaser.performRelease(ChangelogReleaserArgs.fromArgs(changeLogDirectory.toPath(),
>> +                    releaseVersion));
>> +        } catch (Exception ex) {
>> +            throw new MojoExecutionException("Error performing release", ex);
>> +        }
>> +    }
>> +}
>> diff --git a/pom.xml b/pom.xml
>> index c7c76fa..5abb06e 100644
>> --- a/pom.xml
>> +++ b/pom.xml
>> @@ -48,13 +48,13 @@
>> 
>>    <!-- Modules here must have a corresponding entry in `dependencyManagement > dependencies` block below! -->
>>    <module>log4j-changelog</module>
>> -
>> +    <module>log4j-maven-changelog-plugin</module>
>>  </modules>
>> 
>>  <properties>
>> 
>>    <!-- project version -->
>> -    <revision>0.1.0-SNAPSHOT</revision>
>> +    <revision>0.2.0-SNAPSHOT</revision>
>> 
>>    <!-- `minimalJavaBuildVersion` is employed by `org.apache:apache`, which is the parent of `org.apache.logging:logging-parent`, which is the parent of us.
>>         `minimalJavaBuildVersion` is used for enforcing the compiler version.
>> 
> 


Re: [logging-log4j-tools] 01/01: #20 - Add Maven changelog plugins

Posted by Volkan Yazıcı <vo...@yazi.ci>.
It is a copy-paste mistake from Ralph.
Other files don't have this problem.
I am working on the PR20 branch, I will fix the copyrights too.
Nevertheless, thanks for pointing that out!

On Sun, Jan 22, 2023 at 11:29 PM Matt Sicker <ma...@musigma.org> wrote:

> Are these copyrights really supposed to be so ancient? The copyright year
> goes in the NOTICE.txt file these days anyways, so those could be
> simplified.
> —
> Matt Sicker
>
> > On Jan 21, 2023, at 00:12, rgoers@apache.org wrote:
> >
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > rgoers pushed a commit to branch PR20
> > in repository
> https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
> >
> > commit 1642bc8ee6210fc75dff3e9f319f853e76d65ee5
> > Author: Ralph Goers <rg...@apache.org>
> > AuthorDate: Fri Jan 20 23:08:37 2023 -0700
> >
> >    #20 - Add Maven changelog plugins
> > ---
> > .../changelog/exporter/ChangelogExporter.java      |   7 +-
> > .../changelog/exporter/ChangelogExporterArgs.java  |   6 +-
> > .../changelog/releaser/ChangelogReleaser.java      |   6 +-
> > .../changelog/releaser/ChangelogReleaserArgs.java  |   6 +-
> > log4j-maven-changelog-plugin/pom.xml               | 142
> +++++++++++++++++++++
> > .../java/org/apache/logging/log4j/ExportMojo.java  |  68 ++++++++++
> > .../java/org/apache/logging/log4j/ReleaseMojo.java |  71 +++++++++++
> > pom.xml                                            |   4 +-
> > 8 files changed, 299 insertions(+), 11 deletions(-)
> >
> > diff --git
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> > index 236dcea..82c0c17 100644
> > ---
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> > +++
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> > @@ -34,10 +34,10 @@ public final class ChangelogExporter {
> >     private ChangelogExporter() {}
> >
> >     public static void main(final String[] mainArgs) {
> > +        performExport(ChangelogExporterArgs.fromSystemProperties());
> > +    }
> >
> > -        // Read arguments
> > -        final ChangelogExporterArgs args =
> ChangelogExporterArgs.fromSystemProperties();
> > -
> > +    public static void performExport(final ChangelogExporterArgs args) {
> >         // Find release directories
> >         final List<Path> releaseDirectories =
> findReleaseDirectories(args);
> >         final int releaseDirectoryCount = releaseDirectories.size();
> > @@ -107,7 +107,6 @@ public final class ChangelogExporter {
> >         // Export the release index
> >         final Path changelogIndexTemplateFile =
> ChangelogFiles.indexTemplateFile(args.changelogDirectory);
> >         exportIndex(args.outputDirectory, changelogReleases,
> changelogIndexTemplateFile);
> > -
> >     }
> >
> >     private static List<Path>
> findReleaseDirectories(ChangelogExporterArgs args) {
> > diff --git
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> > index 8d79d9a..32a4878 100644
> > ---
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> > +++
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> > @@ -20,7 +20,7 @@ import java.nio.file.Path;
> >
> > import static
> org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
> >
> > -final class ChangelogExporterArgs {
> > +public final class ChangelogExporterArgs {
> >
> >     final Path changelogDirectory;
> >
> > @@ -37,4 +37,8 @@ final class ChangelogExporterArgs {
> >         return new ChangelogExporterArgs(changelogDirectory,
> outputDirectory);
> >     }
> >
> > +    public static ChangelogExporterArgs fromArgs(final Path
> changelogDirectory, final Path outputDirectory) {
> > +        return new ChangelogExporterArgs(changelogDirectory,
> outputDirectory);
> > +    }
> > +
> > }
> > diff --git
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> > index 55b4fca..02268b3 100644
> > ---
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> > +++
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> > @@ -35,9 +35,10 @@ public final class ChangelogReleaser {
> >
> >     public static void main(final String[] mainArgs) throws Exception {
> >
> > -        // Read arguments
> > -        final ChangelogReleaserArgs args =
> ChangelogReleaserArgs.fromSystemProperties();
> > +        performRelease(ChangelogReleaserArgs.fromSystemProperties());
> > +    }
> >
> > +    public static void performRelease(final ChangelogReleaserArgs args)
> throws Exception {
> >         // Read the release date and version
> >         final String releaseDate = ISO_DATE.format(LocalDate.now());
> >         final int releaseVersionMajor =
> VersionUtils.versionMajor(args.releaseVersion);
> > @@ -53,7 +54,6 @@ public final class ChangelogReleaser {
> >
> >         // Write the release changelog template
> >         populateReleaseChangelogTemplateFile(unreleasedDirectory,
> releaseDirectory);
> > -
> >     }
> >
> >     private static void populateChangelogEntryFiles(
> > diff --git
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> > index f6bf6cb..7a47c3c 100644
> > ---
> a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> > +++
> b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> > @@ -22,7 +22,7 @@ import static
> org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBl
> > import static
> org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankStringProperty;
> > import static
> org.apache.logging.log4j.changelog.util.VersionUtils.requireSemanticVersioning;
> >
> > -final class ChangelogReleaserArgs {
> > +public final class ChangelogReleaserArgs {
> >
> >     final Path changelogDirectory;
> >
> > @@ -41,4 +41,8 @@ final class ChangelogReleaserArgs {
> >         return new ChangelogReleaserArgs(changelogDirectory,
> releaseVersion);
> >     }
> >
> > +    public static ChangelogReleaserArgs fromArgs(final Path
> changelogDirectory, final String releaseVersion) {
> > +        return new ChangelogReleaserArgs(changelogDirectory,
> releaseVersion);
> > +    }
> > +
> > }
> > diff --git a/log4j-maven-changelog-plugin/pom.xml
> b/log4j-maven-changelog-plugin/pom.xml
> > new file mode 100644
> > index 0000000..7dc4ea6
> > --- /dev/null
> > +++ b/log4j-maven-changelog-plugin/pom.xml
> > @@ -0,0 +1,142 @@
> > +<?xml version="1.0" encoding="UTF-8"?>
> > +<!--
> > +  Licensed to the Apache Software Foundation (ASF) under one or more
> > +  contributor license agreements. See the NOTICE file distributed with
> > +  this work for additional information regarding copyright ownership.
> > +  The ASF licenses this file to You under the Apache License, Version
> 2.0
> > +  (the "License"); you may not use this file except in compliance with
> > +  the License. You may obtain a copy of the License at
> > +
> > +      https://www.apache.org/licenses/LICENSE-2.0
> > +
> > +  Unless required by applicable law or agreed to in writing, software
> > +  distributed under the License is distributed on an "AS IS" BASIS,
> > +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > +  See the License for the specific language governing permissions and
> > +  limitations under the License.
> > +-->
> > +<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
> http://maven.apache.org/xsd/maven-4.0.0.xsd">
> > +  <modelVersion>4.0.0</modelVersion>
> > +  <parent>
> > +    <groupId>org.apache.logging.log4j</groupId>
> > +    <artifactId>log4j-tools-parent</artifactId>
> > +    <version>${revision}</version>
> > +    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
> > +  </parent>
> > +  <artifactId>log4j-maven-changelog-plugin</artifactId>
> > +  <packaging>maven-plugin</packaging>
> > +
> > +  <name>log4j-maven-changelog-plugin Maven Plugin</name>
> > +
> > +  <!-- FIXME change it to the project's website -->
> > +  <url>http://maven.apache.org</url>
> > +
> > +  <properties>
> > +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> > +  </properties>
> > +
> > +  <dependencyManagement>
> > +    <dependencies>
> > +      <dependency>
> > +        <groupId>org.codehaus.plexus</groupId>
> > +        <artifactId>plexus-utils</artifactId>
> > +        <version>3.3.1</version>
> > +      </dependency>
> > +    </dependencies>
> > +  </dependencyManagement>
> > +
> > +  <dependencies>
> > +    <dependency>
> > +      <groupId>org.apache.maven</groupId>
> > +      <artifactId>maven-plugin-api</artifactId>
> > +      <version>3.8.7</version>
> > +    </dependency>
> > +    <dependency>
> > +      <groupId>org.apache.maven.plugin-tools</groupId>
> > +      <artifactId>maven-plugin-annotations</artifactId>
> > +      <version>3.6.4</version>
> > +      <scope>provided</scope>
> > +    </dependency>
> > +    <dependency>
> > +      <groupId>org.codehaus.plexus</groupId>
> > +      <artifactId>plexus-utils</artifactId>
> > +      <version>3.3.1</version>
> > +    </dependency>
> > +    <dependency>
> > +      <groupId>org.apache.logging.log4j</groupId>
> > +      <artifactId>log4j-changelog</artifactId>
> > +      <version>${project.version}</version>
> > +    </dependency>
> > +    <dependency>
> > +      <groupId>junit</groupId>
> > +      <artifactId>junit</artifactId>
> > +      <version>4.8.2</version>
> > +      <scope>test</scope>
> > +    </dependency>
> > +  </dependencies>
> > +
> > +  <build>
> > +    <plugins>
> > +      <plugin>
> > +        <groupId>org.apache.maven.plugins</groupId>
> > +        <artifactId>maven-plugin-plugin</artifactId>
> > +        <version>3.5</version>
> > +        <configuration>
> > +          <goalPrefix>log4j-changelog</goalPrefix>
> > +
> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
> > +          <mojoDependencies>
> > +          </mojoDependencies>
> > +        </configuration>
> > +        <executions>
> > +          <execution>
> > +            <id>mojo-descriptor</id>
> > +            <goals>
> > +              <goal>descriptor</goal>
> > +            </goals>
> > +          </execution>
> > +        </executions>
> > +      </plugin>
> > +    </plugins>
> > +  </build>
> > +  <profiles>
> > +    <profile>
> > +      <id>run-its</id>
> > +      <build>
> > +
> > +        <plugins>
> > +          <plugin>
> > +            <groupId>org.apache.maven.plugins</groupId>
> > +            <artifactId>maven-invoker-plugin</artifactId>
> > +            <version>1.7</version>
> > +            <configuration>
> > +              <debug>true</debug>
> > +
> <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
> > +              <pomIncludes>
> > +                <pomInclude>*/pom.xml</pomInclude>
> > +              </pomIncludes>
> > +              <postBuildHookScript>verify</postBuildHookScript>
> > +
> <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
> > +              <settingsFile>src/it/settings.xml</settingsFile>
> > +              <goals>
> > +                <goal>clean</goal>
> > +                <goal>test-compile</goal>
> > +              </goals>
> > +            </configuration>
> > +            <executions>
> > +              <execution>
> > +                <id>integration-test</id>
> > +                <goals>
> > +                  <goal>install</goal>
> > +                  <goal>integration-test</goal>
> > +                  <goal>verify</goal>
> > +                </goals>
> > +              </execution>
> > +            </executions>
> > +          </plugin>
> > +        </plugins>
> > +
> > +      </build>
> > +    </profile>
> > +  </profiles>
> > +</project>
> > diff --git
> a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
> b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
> > new file mode 100644
> > index 0000000..99919a5
> > --- /dev/null
> > +++
> b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
> > @@ -0,0 +1,68 @@
> > +/*
> > + * Licensed to the Apache Software Foundation (ASF) under one or more
> > + * contributor license agreements. See the NOTICE file distributed with
> > + * this work for additional information regarding copyright ownership.
> > + * The ASF licenses this file to You under the Apache license, Version
> 2.0
> > + * (the "License"); you may not use this file except in compliance with
> > + * the License. You may obtain a copy of the License at
> > + *
> > + *      http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > + * See the license for the specific language governing permissions and
> > + * limitations under the license.
> > + */
> > +package org.apache.logging.log4j;
> > +
> > +/*
> > + * Copyright 2001-2005 The Apache Software Foundation.
> > + *
> > + * Licensed under the Apache License, Version 2.0 (the "License");
> > + * you may not use this file except in compliance with the License.
> > + * You may obtain a copy of the License at
> > + *
> > + *      http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +
> > +import java.io.File;
> > +
> > +import org.apache.logging.log4j.changelog.exporter.ChangelogExporter;
> > +import
> org.apache.logging.log4j.changelog.exporter.ChangelogExporterArgs;
> > +
> > +import org.apache.maven.plugin.AbstractMojo;
> > +import org.apache.maven.plugin.MojoExecutionException;
> > +import org.apache.maven.plugins.annotations.LifecyclePhase;
> > +import org.apache.maven.plugins.annotations.Mojo;
> > +import org.apache.maven.plugins.annotations.Parameter;
> > +
> > +/**
> > + * Goal which creates a changelog.
> > + */
> > +@Mojo(name = "export", defaultPhase = LifecyclePhase.PRE_SITE)
> > +public class ExportMojo extends AbstractMojo {
> > +    /**
> > +     * Location of the file.
> > +     */
> > +    @Parameter(defaultValue =
> "${project.build.directory}/generated-sources/site/asciidoc/changelog",
> > +            property = "outputDir", required = true)
> > +    private File outputDirectory;
> > +
> > +    /**
> > +     * Location of the file.
> > +     */
> > +    @Parameter(defaultValue = "${project.basedir}/src/changelog",
> property = "changeLogDir", required = true)
> > +    private File changeLogDirectory;
> > +
> > +    public void execute() throws MojoExecutionException {
> > +
> ChangelogExporter.performExport(ChangelogExporterArgs.fromArgs(changeLogDirectory.toPath(),
> > +                outputDirectory.toPath()));
> > +    }
> > +}
> > diff --git
> a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
> b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
> > new file mode 100644
> > index 0000000..001a692
> > --- /dev/null
> > +++
> b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
> > @@ -0,0 +1,71 @@
> > +/*
> > + * Licensed to the Apache Software Foundation (ASF) under one or more
> > + * contributor license agreements. See the NOTICE file distributed with
> > + * this work for additional information regarding copyright ownership.
> > + * The ASF licenses this file to You under the Apache license, Version
> 2.0
> > + * (the "License"); you may not use this file except in compliance with
> > + * the License. You may obtain a copy of the License at
> > + *
> > + *      http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > + * See the license for the specific language governing permissions and
> > + * limitations under the license.
> > + */
> > +package org.apache.logging.log4j;
> > +
> > +/*
> > + * Copyright 2001-2005 The Apache Software Foundation.
> > + *
> > + * Licensed under the Apache License, Version 2.0 (the "License");
> > + * you may not use this file except in compliance with the License.
> > + * You may obtain a copy of the License at
> > + *
> > + *      http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +
> > +import java.io.File;
> > +
> > +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
> > +import
> org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
> > +
> > +import org.apache.maven.plugin.AbstractMojo;
> > +import org.apache.maven.plugin.MojoExecutionException;
> > +import org.apache.maven.plugins.annotations.LifecyclePhase;
> > +import org.apache.maven.plugins.annotations.Mojo;
> > +import org.apache.maven.plugins.annotations.Parameter;
> > +
> > +/**
> > + * Goal which creates a changelog.
> > + */
> > +@Mojo(name = "release", defaultPhase = LifecyclePhase.PRE_SITE)
> > +public class ReleaseMojo extends AbstractMojo {
> > +    /**
> > +     * Location of the file.
> > +     */
> > +    @Parameter(property = "version", required = true)
> > +    private String releaseVersion;
> > +
> > +    /**
> > +     * Location of the file.
> > +     */
> > +    @Parameter(defaultValue = "${project.basedir}/src/changelog",
> property = "changeLogDir", required = true)
> > +    private File changeLogDirectory;
> > +
> > +    public void execute() throws MojoExecutionException {
> > +        try {
> > +
> ChangelogReleaser.performRelease(ChangelogReleaserArgs.fromArgs(changeLogDirectory.toPath(),
> > +                    releaseVersion));
> > +        } catch (Exception ex) {
> > +            throw new MojoExecutionException("Error performing
> release", ex);
> > +        }
> > +    }
> > +}
> > diff --git a/pom.xml b/pom.xml
> > index c7c76fa..5abb06e 100644
> > --- a/pom.xml
> > +++ b/pom.xml
> > @@ -48,13 +48,13 @@
> >
> >     <!-- Modules here must have a corresponding entry in
> `dependencyManagement > dependencies` block below! -->
> >     <module>log4j-changelog</module>
> > -
> > +    <module>log4j-maven-changelog-plugin</module>
> >   </modules>
> >
> >   <properties>
> >
> >     <!-- project version -->
> > -    <revision>0.1.0-SNAPSHOT</revision>
> > +    <revision>0.2.0-SNAPSHOT</revision>
> >
> >     <!-- `minimalJavaBuildVersion` is employed by `org.apache:apache`,
> which is the parent of `org.apache.logging:logging-parent`, which is the
> parent of us.
> >          `minimalJavaBuildVersion` is used for enforcing the compiler
> version.
> >
>
>

Re: [logging-log4j-tools] 01/01: #20 - Add Maven changelog plugins

Posted by Matt Sicker <ma...@musigma.org>.
Are these copyrights really supposed to be so ancient? The copyright year goes in the NOTICE.txt file these days anyways, so those could be simplified.
—
Matt Sicker

> On Jan 21, 2023, at 00:12, rgoers@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> rgoers pushed a commit to branch PR20
> in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
> 
> commit 1642bc8ee6210fc75dff3e9f319f853e76d65ee5
> Author: Ralph Goers <rg...@apache.org>
> AuthorDate: Fri Jan 20 23:08:37 2023 -0700
> 
>    #20 - Add Maven changelog plugins
> ---
> .../changelog/exporter/ChangelogExporter.java      |   7 +-
> .../changelog/exporter/ChangelogExporterArgs.java  |   6 +-
> .../changelog/releaser/ChangelogReleaser.java      |   6 +-
> .../changelog/releaser/ChangelogReleaserArgs.java  |   6 +-
> log4j-maven-changelog-plugin/pom.xml               | 142 +++++++++++++++++++++
> .../java/org/apache/logging/log4j/ExportMojo.java  |  68 ++++++++++
> .../java/org/apache/logging/log4j/ReleaseMojo.java |  71 +++++++++++
> pom.xml                                            |   4 +-
> 8 files changed, 299 insertions(+), 11 deletions(-)
> 
> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> index 236dcea..82c0c17 100644
> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
> @@ -34,10 +34,10 @@ public final class ChangelogExporter {
>     private ChangelogExporter() {}
> 
>     public static void main(final String[] mainArgs) {
> +        performExport(ChangelogExporterArgs.fromSystemProperties());
> +    }
> 
> -        // Read arguments
> -        final ChangelogExporterArgs args = ChangelogExporterArgs.fromSystemProperties();
> -
> +    public static void performExport(final ChangelogExporterArgs args) {
>         // Find release directories
>         final List<Path> releaseDirectories = findReleaseDirectories(args);
>         final int releaseDirectoryCount = releaseDirectories.size();
> @@ -107,7 +107,6 @@ public final class ChangelogExporter {
>         // Export the release index
>         final Path changelogIndexTemplateFile = ChangelogFiles.indexTemplateFile(args.changelogDirectory);
>         exportIndex(args.outputDirectory, changelogReleases, changelogIndexTemplateFile);
> -
>     }
> 
>     private static List<Path> findReleaseDirectories(ChangelogExporterArgs args) {
> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> index 8d79d9a..32a4878 100644
> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
> @@ -20,7 +20,7 @@ import java.nio.file.Path;
> 
> import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
> 
> -final class ChangelogExporterArgs {
> +public final class ChangelogExporterArgs {
> 
>     final Path changelogDirectory;
> 
> @@ -37,4 +37,8 @@ final class ChangelogExporterArgs {
>         return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
>     }
> 
> +    public static ChangelogExporterArgs fromArgs(final Path changelogDirectory, final Path outputDirectory) {
> +        return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
> +    }
> +
> }
> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> index 55b4fca..02268b3 100644
> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
> @@ -35,9 +35,10 @@ public final class ChangelogReleaser {
> 
>     public static void main(final String[] mainArgs) throws Exception {
> 
> -        // Read arguments
> -        final ChangelogReleaserArgs args = ChangelogReleaserArgs.fromSystemProperties();
> +        performRelease(ChangelogReleaserArgs.fromSystemProperties());
> +    }
> 
> +    public static void performRelease(final ChangelogReleaserArgs args) throws Exception {
>         // Read the release date and version
>         final String releaseDate = ISO_DATE.format(LocalDate.now());
>         final int releaseVersionMajor = VersionUtils.versionMajor(args.releaseVersion);
> @@ -53,7 +54,6 @@ public final class ChangelogReleaser {
> 
>         // Write the release changelog template
>         populateReleaseChangelogTemplateFile(unreleasedDirectory, releaseDirectory);
> -
>     }
> 
>     private static void populateChangelogEntryFiles(
> diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> index f6bf6cb..7a47c3c 100644
> --- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> +++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
> @@ -22,7 +22,7 @@ import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBl
> import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankStringProperty;
> import static org.apache.logging.log4j.changelog.util.VersionUtils.requireSemanticVersioning;
> 
> -final class ChangelogReleaserArgs {
> +public final class ChangelogReleaserArgs {
> 
>     final Path changelogDirectory;
> 
> @@ -41,4 +41,8 @@ final class ChangelogReleaserArgs {
>         return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
>     }
> 
> +    public static ChangelogReleaserArgs fromArgs(final Path changelogDirectory, final String releaseVersion) {
> +        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
> +    }
> +
> }
> diff --git a/log4j-maven-changelog-plugin/pom.xml b/log4j-maven-changelog-plugin/pom.xml
> new file mode 100644
> index 0000000..7dc4ea6
> --- /dev/null
> +++ b/log4j-maven-changelog-plugin/pom.xml
> @@ -0,0 +1,142 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +  Licensed to the Apache Software Foundation (ASF) under one or more
> +  contributor license agreements. See the NOTICE file distributed with
> +  this work for additional information regarding copyright ownership.
> +  The ASF licenses this file to You under the Apache License, Version 2.0
> +  (the "License"); you may not use this file except in compliance with
> +  the License. You may obtain a copy of the License at
> +
> +      https://www.apache.org/licenses/LICENSE-2.0
> +
> +  Unless required by applicable law or agreed to in writing, software
> +  distributed under the License is distributed on an "AS IS" BASIS,
> +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +  See the License for the specific language governing permissions and
> +  limitations under the License.
> +-->
> +<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> +  <modelVersion>4.0.0</modelVersion>
> +  <parent>
> +    <groupId>org.apache.logging.log4j</groupId>
> +    <artifactId>log4j-tools-parent</artifactId>
> +    <version>${revision}</version>
> +    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
> +  </parent>
> +  <artifactId>log4j-maven-changelog-plugin</artifactId>
> +  <packaging>maven-plugin</packaging>
> +
> +  <name>log4j-maven-changelog-plugin Maven Plugin</name>
> +
> +  <!-- FIXME change it to the project's website -->
> +  <url>http://maven.apache.org</url>
> +
> +  <properties>
> +    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
> +  </properties>
> +
> +  <dependencyManagement>
> +    <dependencies>
> +      <dependency>
> +        <groupId>org.codehaus.plexus</groupId>
> +        <artifactId>plexus-utils</artifactId>
> +        <version>3.3.1</version>
> +      </dependency>
> +    </dependencies>
> +  </dependencyManagement>
> +
> +  <dependencies>
> +    <dependency>
> +      <groupId>org.apache.maven</groupId>
> +      <artifactId>maven-plugin-api</artifactId>
> +      <version>3.8.7</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.maven.plugin-tools</groupId>
> +      <artifactId>maven-plugin-annotations</artifactId>
> +      <version>3.6.4</version>
> +      <scope>provided</scope>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.codehaus.plexus</groupId>
> +      <artifactId>plexus-utils</artifactId>
> +      <version>3.3.1</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>org.apache.logging.log4j</groupId>
> +      <artifactId>log4j-changelog</artifactId>
> +      <version>${project.version}</version>
> +    </dependency>
> +    <dependency>
> +      <groupId>junit</groupId>
> +      <artifactId>junit</artifactId>
> +      <version>4.8.2</version>
> +      <scope>test</scope>
> +    </dependency>
> +  </dependencies>
> +
> +  <build>
> +    <plugins>
> +      <plugin>
> +        <groupId>org.apache.maven.plugins</groupId>
> +        <artifactId>maven-plugin-plugin</artifactId>
> +        <version>3.5</version>
> +        <configuration>
> +          <goalPrefix>log4j-changelog</goalPrefix>
> +          <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
> +          <mojoDependencies>
> +          </mojoDependencies>
> +        </configuration>
> +        <executions>
> +          <execution>
> +            <id>mojo-descriptor</id>
> +            <goals>
> +              <goal>descriptor</goal>
> +            </goals>
> +          </execution>
> +        </executions>
> +      </plugin>
> +    </plugins>
> +  </build>
> +  <profiles>
> +    <profile>
> +      <id>run-its</id>
> +      <build>
> +
> +        <plugins>
> +          <plugin>
> +            <groupId>org.apache.maven.plugins</groupId>
> +            <artifactId>maven-invoker-plugin</artifactId>
> +            <version>1.7</version>
> +            <configuration>
> +              <debug>true</debug>
> +              <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
> +              <pomIncludes>
> +                <pomInclude>*/pom.xml</pomInclude>
> +              </pomIncludes>
> +              <postBuildHookScript>verify</postBuildHookScript>
> +              <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
> +              <settingsFile>src/it/settings.xml</settingsFile>
> +              <goals>
> +                <goal>clean</goal>
> +                <goal>test-compile</goal>
> +              </goals>
> +            </configuration>
> +            <executions>
> +              <execution>
> +                <id>integration-test</id>
> +                <goals>
> +                  <goal>install</goal>
> +                  <goal>integration-test</goal>
> +                  <goal>verify</goal>
> +                </goals>
> +              </execution>
> +            </executions>
> +          </plugin>
> +        </plugins>
> +
> +      </build>
> +    </profile>
> +  </profiles>
> +</project>
> diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
> new file mode 100644
> index 0000000..99919a5
> --- /dev/null
> +++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
> @@ -0,0 +1,68 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache license, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License. You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the license for the specific language governing permissions and
> + * limitations under the license.
> + */
> +package org.apache.logging.log4j;
> +
> +/*
> + * Copyright 2001-2005 The Apache Software Foundation.
> + *
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +import java.io.File;
> +
> +import org.apache.logging.log4j.changelog.exporter.ChangelogExporter;
> +import org.apache.logging.log4j.changelog.exporter.ChangelogExporterArgs;
> +
> +import org.apache.maven.plugin.AbstractMojo;
> +import org.apache.maven.plugin.MojoExecutionException;
> +import org.apache.maven.plugins.annotations.LifecyclePhase;
> +import org.apache.maven.plugins.annotations.Mojo;
> +import org.apache.maven.plugins.annotations.Parameter;
> +
> +/**
> + * Goal which creates a changelog.
> + */
> +@Mojo(name = "export", defaultPhase = LifecyclePhase.PRE_SITE)
> +public class ExportMojo extends AbstractMojo {
> +    /**
> +     * Location of the file.
> +     */
> +    @Parameter(defaultValue = "${project.build.directory}/generated-sources/site/asciidoc/changelog",
> +            property = "outputDir", required = true)
> +    private File outputDirectory;
> +
> +    /**
> +     * Location of the file.
> +     */
> +    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
> +    private File changeLogDirectory;
> +
> +    public void execute() throws MojoExecutionException {
> +        ChangelogExporter.performExport(ChangelogExporterArgs.fromArgs(changeLogDirectory.toPath(),
> +                outputDirectory.toPath()));
> +    }
> +}
> diff --git a/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
> new file mode 100644
> index 0000000..001a692
> --- /dev/null
> +++ b/log4j-maven-changelog-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
> @@ -0,0 +1,71 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache license, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License. You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the license for the specific language governing permissions and
> + * limitations under the license.
> + */
> +package org.apache.logging.log4j;
> +
> +/*
> + * Copyright 2001-2005 The Apache Software Foundation.
> + *
> + * Licensed under the Apache License, Version 2.0 (the "License");
> + * you may not use this file except in compliance with the License.
> + * You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +import java.io.File;
> +
> +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
> +import org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
> +
> +import org.apache.maven.plugin.AbstractMojo;
> +import org.apache.maven.plugin.MojoExecutionException;
> +import org.apache.maven.plugins.annotations.LifecyclePhase;
> +import org.apache.maven.plugins.annotations.Mojo;
> +import org.apache.maven.plugins.annotations.Parameter;
> +
> +/**
> + * Goal which creates a changelog.
> + */
> +@Mojo(name = "release", defaultPhase = LifecyclePhase.PRE_SITE)
> +public class ReleaseMojo extends AbstractMojo {
> +    /**
> +     * Location of the file.
> +     */
> +    @Parameter(property = "version", required = true)
> +    private String releaseVersion;
> +
> +    /**
> +     * Location of the file.
> +     */
> +    @Parameter(defaultValue = "${project.basedir}/src/changelog", property = "changeLogDir", required = true)
> +    private File changeLogDirectory;
> +
> +    public void execute() throws MojoExecutionException {
> +        try {
> +            ChangelogReleaser.performRelease(ChangelogReleaserArgs.fromArgs(changeLogDirectory.toPath(),
> +                    releaseVersion));
> +        } catch (Exception ex) {
> +            throw new MojoExecutionException("Error performing release", ex);
> +        }
> +    }
> +}
> diff --git a/pom.xml b/pom.xml
> index c7c76fa..5abb06e 100644
> --- a/pom.xml
> +++ b/pom.xml
> @@ -48,13 +48,13 @@
> 
>     <!-- Modules here must have a corresponding entry in `dependencyManagement > dependencies` block below! -->
>     <module>log4j-changelog</module>
> -
> +    <module>log4j-maven-changelog-plugin</module>
>   </modules>
> 
>   <properties>
> 
>     <!-- project version -->
> -    <revision>0.1.0-SNAPSHOT</revision>
> +    <revision>0.2.0-SNAPSHOT</revision>
> 
>     <!-- `minimalJavaBuildVersion` is employed by `org.apache:apache`, which is the parent of `org.apache.logging:logging-parent`, which is the parent of us.
>          `minimalJavaBuildVersion` is used for enforcing the compiler version.
>