You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/02/24 22:12:21 UTC
[logging-log4j-transform] branch main updated: Enable integration tests
This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j-transform.git
The following commit(s) were added to refs/heads/main by this push:
new dd91cf0 Enable integration tests
dd91cf0 is described below
commit dd91cf04c99b19fa85495ff6f1cf1bf9fd424d1c
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Feb 24 23:11:02 2023 +0100
Enable integration tests
---
log4j-transform-maven-plugin/pom.xml | 25 +++++++++++++
.../src/it/location/pom.xml | 26 +++++++------
.../it/location => transform/maven/it}/Main.java | 2 +-
.../log4j/transform/maven/it/MainTest.java} | 21 +++++------
.../log4j/{ => transform}/maven/LocationMojo.java | 43 ++++++++++++++++++++--
.../maven/scan/ClassFileInclusionScanner.java | 2 +-
.../maven/scan/SimpleInclusionScanner.java | 2 +-
log4j-transform-parent/pom.xml | 11 ++++++
8 files changed, 103 insertions(+), 29 deletions(-)
diff --git a/log4j-transform-maven-plugin/pom.xml b/log4j-transform-maven-plugin/pom.xml
index a1e076c..0911d13 100644
--- a/log4j-transform-maven-plugin/pom.xml
+++ b/log4j-transform-maven-plugin/pom.xml
@@ -40,6 +40,11 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
@@ -60,6 +65,26 @@
<skip>true</skip>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <configuration>
+ <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
+ <localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
+ <goals>
+ <goal>clean verify</goal>
+ </goals>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>install</goal>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
diff --git a/log4j-transform-maven-plugin/src/it/location/pom.xml b/log4j-transform-maven-plugin/src/it/location/pom.xml
index acbda6d..a294db1 100644
--- a/log4j-transform-maven-plugin/src/it/location/pom.xml
+++ b/log4j-transform-maven-plugin/src/it/location/pom.xml
@@ -15,41 +15,45 @@
~ 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.logging</groupId>
- <artifactId>logging-parent</artifactId>
- <version>7</version>
- <relativePath/>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-transform-parent</artifactId>
+ <version>${revision}</version>
+ <relativePath>../../../../log4j-transform-parent</relativePath>
</parent>
<groupId>org.apache.logging.log4j.maven.it</groupId>
<artifactId>log4j-maven-it-location</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
<name>Apache Log4j Maven plugin test</name>
<description>The Apache Log4j Maven plugin test</description>
- <packaging>jar</packaging>
<properties>
- <log4jParentDir>${basedir}/../../../..</log4jParentDir>
+ <log4j2.version>2.20.0</log4j2.version>
+ <revision>0.1.0-SNAPSHOT</revision>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
- <version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
- <version>${project.version}</version>
<scope>runtime</scope>
</dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-maven-plugin</artifactId>
+ <artifactId>log4j-transform-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
diff --git a/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/maven/it/location/Main.java b/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/transform/maven/it/Main.java
similarity index 95%
rename from log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/maven/it/location/Main.java
rename to log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/transform/maven/it/Main.java
index e535c67..3a91d3f 100644
--- a/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/maven/it/location/Main.java
+++ b/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/transform/maven/it/Main.java
@@ -14,7 +14,7 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j.maven.it.location;
+package org.apache.logging.log4j.transform.maven.it;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java b/log4j-transform-maven-plugin/src/it/location/src/test/java/org/apache/logging/log4j/transform/maven/it/MainTest.java
similarity index 63%
copy from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
copy to log4j-transform-maven-plugin/src/it/location/src/test/java/org/apache/logging/log4j/transform/maven/it/MainTest.java
index fbefbc5..0f3fc95 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
+++ b/log4j-transform-maven-plugin/src/it/location/src/test/java/org/apache/logging/log4j/transform/maven/it/MainTest.java
@@ -14,19 +14,16 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j.maven.scan;
+package org.apache.logging.log4j.transform.maven.it;
-import java.nio.file.Path;
-import java.util.Set;
+import org.junit.jupiter.api.Test;
-public interface ClassFileInclusionScanner {
+public class MainTest {
- /**
- * Finds class files matching a specific condition.
- *
- * @param sourceDir path to the folder where to search files
- * @param targetDir an auxiliary folder
- * @return a set of relative paths to file in {@code sourceDir}
- */
- Set<Path> getIncludedClassFiles(Path sourceDir, Path targetDir);
+ private static final String[] ARGS = {"Hello", "Log4j2"};
+
+ @Test
+ public void testDoesNotThrow() {
+ Main.main(ARGS);
+ }
}
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/LocationMojo.java b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/LocationMojo.java
similarity index 72%
rename from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/LocationMojo.java
rename to log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/LocationMojo.java
index b7acb51..e4358e4 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/LocationMojo.java
+++ b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/LocationMojo.java
@@ -14,7 +14,7 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j.maven;
+package org.apache.logging.log4j.transform.maven;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -26,11 +26,15 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
-import org.apache.logging.log4j.maven.scan.ClassFileInclusionScanner;
-import org.apache.logging.log4j.maven.scan.SimpleInclusionScanner;
+import org.apache.logging.log4j.transform.maven.scan.ClassFileInclusionScanner;
+import org.apache.logging.log4j.transform.maven.scan.SimpleInclusionScanner;
import org.apache.logging.log4j.weaver.LocationCacheGenerator;
import org.apache.logging.log4j.weaver.LocationClassConverter;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
@@ -38,6 +42,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
/**
* Generates location information for use with Log4j2.
@@ -46,6 +51,16 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
requiresDependencyResolution = ResolutionScope.COMPILE)
public class LocationMojo extends AbstractMojo {
+ private static final String LOG4J_GROUP_ID = "org.apache.logging.log4j";
+ private static final String LOG4J_API_ARTIFACT_ID = "log4j-api";
+ private static final ArtifactVersion MIN_SUPPORTED_VERSION = new DefaultArtifactVersion("2.20.0");
+
+ /**
+ * The Maven project.
+ */
+ @Parameter( defaultValue = "${project}", readonly = true, required = true )
+ private MavenProject project;
+
/**
* The directory containing class files to process.
*/
@@ -67,6 +82,8 @@ public class LocationMojo extends AbstractMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ validateLog4jVersion();
+
final Path sourceDirectory = this.sourceDirectory.toPath();
final Path outputDirectory = this.outputDirectory.toPath();
final LocationCacheGenerator locationCache = new LocationCacheGenerator();
@@ -136,4 +153,24 @@ public class LocationMojo extends AbstractMojo {
}
}
+
+ private void validateLog4jVersion() throws MojoExecutionException {
+ Artifact log4jApi = project.getArtifacts()
+ .stream()
+ .filter(a -> LOG4J_GROUP_ID.equals(a.getGroupId()) && LOG4J_API_ARTIFACT_ID.equals(a.getArtifactId()))
+ .findAny()
+ .orElseThrow(() -> new MojoExecutionException("Missing `log4j-api` dependency."));
+ try {
+ if (MIN_SUPPORTED_VERSION.compareTo(log4jApi.getSelectedVersion()) > 0) {
+ throw new MojoExecutionException("Log4j2 API version " + MIN_SUPPORTED_VERSION
+ + " required. Selected version: " + log4jApi.getSelectedVersion());
+ }
+ // Transitive dependency
+ if (!project.getDependencyArtifacts().contains(log4jApi)) {
+ getLog().warn("Log4j2 API should not be a transitive dependency.");
+ }
+ } catch (OverConstrainedVersionException e) {
+ throw new MojoExecutionException("Can not determine `log4j-api` version.", e);
+ }
+ }
}
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/ClassFileInclusionScanner.java
similarity index 95%
rename from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
rename to log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/ClassFileInclusionScanner.java
index fbefbc5..b86e24e 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
+++ b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/ClassFileInclusionScanner.java
@@ -14,7 +14,7 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j.maven.scan;
+package org.apache.logging.log4j.transform.maven.scan;
import java.nio.file.Path;
import java.util.Set;
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/SimpleInclusionScanner.java b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/SimpleInclusionScanner.java
similarity index 98%
rename from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/SimpleInclusionScanner.java
rename to log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/SimpleInclusionScanner.java
index 48ea78e..9ab831a 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/SimpleInclusionScanner.java
+++ b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/SimpleInclusionScanner.java
@@ -14,7 +14,7 @@
* See the license for the specific language governing permissions and
* limitations under the license.
*/
-package org.apache.logging.log4j.maven.scan;
+package org.apache.logging.log4j.transform.maven.scan;
import java.io.IOException;
import java.nio.file.Files;
diff --git a/log4j-transform-parent/pom.xml b/log4j-transform-parent/pom.xml
index f5cdfd6..51296de 100644
--- a/log4j-transform-parent/pom.xml
+++ b/log4j-transform-parent/pom.xml
@@ -53,6 +53,7 @@
<error-prone.version>2.16</error-prone.version>
<jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
<findsecbugs-plugin.version>1.12.0</findsecbugs-plugin.version>
+ <maven-invoker-plugin.version>3.5.0</maven-invoker-plugin.version>
<spotbugs-maven-plugin.version>4.7.3.1</spotbugs-maven-plugin.version>
<surefire.version>3.0.0-M7</surefire.version>
</properties>
@@ -104,6 +105,11 @@
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <version>${maven.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
@@ -139,6 +145,11 @@
<artifactId>maven-bundle-plugin</artifactId>
<version>${bundle-plugin.version}</version>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>${maven-invoker-plugin.version}</version>
+ </plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>