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 00:35:48 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 maven-plugin
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git
commit cecac69c9e6a36d5310607a0d9d4ee5a9af2a04b
Author: Ralph Goers <rg...@apache.org>
AuthorDate: Fri Jan 20 17:35:22 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.