Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package maven-invoker-plugin for
openSUSE:Factory checked in at 2026-05-06 19:19:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/maven-invoker-plugin (Old)
and /work/SRC/openSUSE:Factory/.maven-invoker-plugin.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "maven-invoker-plugin"
Wed May 6 19:19:52 2026 rev:10 rq:1351149 version:3.10.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/maven-invoker-plugin/maven-invoker-plugin.changes
2026-04-26 21:19:13.544774530 +0200
+++
/work/SRC/openSUSE:Factory/.maven-invoker-plugin.new.30200/maven-invoker-plugin.changes
2026-05-06 19:23:47.839685575 +0200
@@ -1,0 +2,10 @@
+Wed May 6 07:02:17 UTC 2026 - Fridrich Strba <[email protected]>
+
+- Upgrade to upstream version 3.10.1
+ * Bug Fixes
+ + Provide separate logs for each execution for rerunning jobs
+ * Dependency updates
+ + Bump commons-codec:commons-codec from 1.21.0 to 1.22.0
+ + Bump commons-io:commons-io from 2.21.0 to 2.22.0
+
+-------------------------------------------------------------------
Old:
----
maven-invoker-plugin-3.10.0-source-release.zip
New:
----
maven-invoker-plugin-3.10.1-source-release.zip
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ maven-invoker-plugin.spec ++++++
--- /var/tmp/diff_new_pack.hnb3WU/_old 2026-05-06 19:23:48.595716763 +0200
+++ /var/tmp/diff_new_pack.hnb3WU/_new 2026-05-06 19:23:48.599716928 +0200
@@ -18,7 +18,7 @@
%bcond_with groovy
Name: maven-invoker-plugin
-Version: 3.10.0
+Version: 3.10.1
Release: 0
Summary: Maven Invoker Plugin
License: Apache-2.0
++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.hnb3WU/_old 2026-05-06 19:23:48.643718742 +0200
+++ /var/tmp/diff_new_pack.hnb3WU/_new 2026-05-06 19:23:48.651719073 +0200
@@ -1,6 +1,6 @@
-mtime: 1777227697
-commit: 4198307db4a2739bf80bd831ff25f6bd143330f9bc48d0a737d8ff8aa39c51d6
+mtime: 1778052551
+commit: 74ab2b7dc00f63cbd846839cf02ef2966a9c5ee5100c9879500a344e3d28102c
url: https://src.opensuse.org/java-packages/maven-invoker-plugin
-revision: 4198307db4a2739bf80bd831ff25f6bd143330f9bc48d0a737d8ff8aa39c51d6
+revision: 74ab2b7dc00f63cbd846839cf02ef2966a9c5ee5100c9879500a344e3d28102c
projectscmsync: https://src.opensuse.org/java-packages/_ObsPrj
++++++ build.specials.obscpio ++++++
++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore 2026-05-06 09:29:11.000000000 +0200
@@ -0,0 +1 @@
+.osc
++++++ maven-invoker-plugin-3.10.0-source-release.zip ->
maven-invoker-plugin-3.10.1-source-release.zip ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/maven-invoker-plugin-3.10.0/DEPENDENCIES
new/maven-invoker-plugin-3.10.1/DEPENDENCIES
--- old/maven-invoker-plugin-3.10.0/DEPENDENCIES 2026-04-22
21:17:38.000000000 +0200
+++ new/maven-invoker-plugin-3.10.1/DEPENDENCIES 2026-05-02
20:49:24.000000000 +0200
@@ -89,10 +89,10 @@
- Apache Commons BeanUtils
(https://commons.apache.org/proper/commons-beanutils)
commons-beanutils:commons-beanutils:jar:1.11.0
License: Apache-2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt)
- - Apache Commons Codec (https://commons.apache.org/proper/commons-codec/)
commons-codec:commons-codec:jar:1.21.0
+ - Apache Commons Codec (https://commons.apache.org/proper/commons-codec/)
commons-codec:commons-codec:jar:1.22.0
License: Apache-2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt)
- - Apache Commons IO (https://commons.apache.org/proper/commons-io/)
commons-io:commons-io:jar:2.21.0
+ - Apache Commons IO (https://commons.apache.org/proper/commons-io/)
commons-io:commons-io:jar:2.22.0
License: Apache-2.0 (https://www.apache.org/licenses/LICENSE-2.0.txt)
- Apache Commons Logging
(https://commons.apache.org/proper/commons-logging/)
commons-logging:commons-logging:jar:1.3.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/maven-invoker-plugin-3.10.0/pom.xml
new/maven-invoker-plugin-3.10.1/pom.xml
--- old/maven-invoker-plugin-3.10.0/pom.xml 2026-04-22 21:17:38.000000000
+0200
+++ new/maven-invoker-plugin-3.10.1/pom.xml 2026-05-02 20:49:24.000000000
+0200
@@ -28,7 +28,7 @@
</parent>
<artifactId>maven-invoker-plugin</artifactId>
- <version>3.10.0</version>
+ <version>3.10.1</version>
<packaging>maven-plugin</packaging>
<name>Apache Maven Invoker Plugin</name>
@@ -42,7 +42,7 @@
<scm>
<connection>scm:git:https://github.com/apache/maven-invoker-plugin.git</connection>
<developerConnection>scm:git:https://github.com/apache/maven-invoker-plugin.git</developerConnection>
- <tag>maven-invoker-plugin-3.10.0</tag>
+ <tag>maven-invoker-plugin-3.10.1</tag>
<url>https://github.com/apache/maven-invoker-plugin/tree/${project.scm.tag}</url>
</scm>
<issueManagement>
@@ -67,7 +67,7 @@
<beanshell-groupId>org.apache-extras.beanshell</beanshell-groupId>
<beanshell-artifactId>bsh</beanshell-artifactId>
<beanshell-version>2.0b6</beanshell-version>
-
<project.build.outputTimestamp>2026-04-22T21:17:37Z</project.build.outputTimestamp>
+
<project.build.outputTimestamp>2026-05-02T20:49:23Z</project.build.outputTimestamp>
<groovyVersion>4.0.31</groovyVersion>
<!-- TODO check with next parent -->
<version.plexus-utils>4.0.3</version.plexus-utils>
@@ -84,7 +84,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.21.0</version>
+ <version>1.22.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
@@ -94,7 +94,7 @@
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
- <version>2.21.0</version>
+ <version>2.22.0</version>
</dependency>
<dependency>
<groupId>org.apache.groovy</groupId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/maven-invoker-plugin-3.10.0/src/it/fail-build-streamLogsOnFailures/pom.xml
new/maven-invoker-plugin-3.10.1/src/it/fail-build-streamLogsOnFailures/pom.xml
---
old/maven-invoker-plugin-3.10.0/src/it/fail-build-streamLogsOnFailures/pom.xml
2026-04-22 21:17:38.000000000 +0200
+++
new/maven-invoker-plugin-3.10.1/src/it/fail-build-streamLogsOnFailures/pom.xml
2026-05-02 20:49:24.000000000 +0200
@@ -47,6 +47,7 @@
<pomInclude>*/pom.xml</pomInclude>
</pomIncludes>
<streamLogsOnFailures>true</streamLogsOnFailures>
+ <rerunFailingTestsCount>1</rerunFailingTestsCount>
</configuration>
<executions>
<execution>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/maven-invoker-plugin-3.10.0/src/it/fail-build-streamLogsOnFailures/verify.groovy
new/maven-invoker-plugin-3.10.1/src/it/fail-build-streamLogsOnFailures/verify.groovy
---
old/maven-invoker-plugin-3.10.0/src/it/fail-build-streamLogsOnFailures/verify.groovy
2026-04-22 21:17:38.000000000 +0200
+++
new/maven-invoker-plugin-3.10.1/src/it/fail-build-streamLogsOnFailures/verify.groovy
2026-05-02 20:49:24.000000000 +0200
@@ -18,12 +18,19 @@
*/
def FS = File.separator
-def buildLogOfProject = new File( basedir, 'target/it/project/build.log' ).text
+def buildLogOfProject1 = new File(basedir,
'target/it/project/build.log.1').text
+def buildLogOfProject = new File(basedir, 'target/it/project/build.log').text
-def buildLog = new File( basedir, 'build.log' ).text
+def buildLog = new File(basedir, 'build.log').text
-assert buildLog.contains( '*** begin build.log for: project' + FS + 'pom.xml
***' )
-assert buildLog.contains( buildLogOfProject )
-assert buildLog.contains( '*** end build.log for: project' + FS + 'pom.xml
***' )
+assert buildLog.contains('*** begin build.log for: project' + FS + 'pom.xml
***')
+assert buildLog.contains('*** build.log for execution: 1 ***')
+assert buildLog.contains(buildLogOfProject1)
+assert buildLog.contains('*** build.log for execution: 2 ***')
+assert buildLog.contains(buildLogOfProject)
+assert buildLog.contains('*** end build.log for: project' + FS + 'pom.xml ***')
-assert buildLog.contains( 'ERROR] Failed to execute goal
org.apache.maven.plugins:maven-invoker-plugin:' + projectVersion + ':run' )
+// the build was re-run so the error is logged twice, once for each run
+assert buildLog.count("[FATAL] 'modelVersion' of '99.0.0'") == 2
+
+assert buildLog.contains('ERROR] Failed to execute goal
org.apache.maven.plugins:maven-invoker-plugin:' + projectVersion + ':run')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/maven-invoker-plugin-3.10.0/src/it/rerun-build/verify.groovy
new/maven-invoker-plugin-3.10.1/src/it/rerun-build/verify.groovy
--- old/maven-invoker-plugin-3.10.0/src/it/rerun-build/verify.groovy
2026-04-22 21:17:38.000000000 +0200
+++ new/maven-invoker-plugin-3.10.1/src/it/rerun-build/verify.groovy
2026-05-02 20:49:24.000000000 +0200
@@ -20,8 +20,8 @@
*/
-assert new File(basedir, 'target/it/setup/touch.txt' ).exists()
-assert new File(basedir, 'target/it/project/touch.txt' ).exists()
+assert new File(basedir, 'target/it/setup/touch.txt').exists()
+assert new File(basedir, 'target/it/project/touch.txt').exists()
def buildLog = new File(basedir, 'build.log').text
@@ -33,12 +33,14 @@
assert buildLog.count("project${fs}pom.xml ..................................
FAILED") == 1
assert buildLog.count("project${fs}pom.xml ..................................
SUCCESS") == 1
+def setupBuildLog1 = new File(basedir, 'target/it/setup/build.log.1').text
+assert setupBuildLog1.count("[INFO] BUILD SUCCESS") == 1
+
def setupBuildLog = new File(basedir, 'target/it/setup/build.log').text
+assert setupBuildLog.count("[INFO] BUILD SUCCESS") == 1
-// The project should be built twice, once for the first run and once for the
rerun.
-assert setupBuildLog.count("[INFO] BUILD SUCCESS") == 2
+def projectBuildLog1 = new File(basedir, 'target/it/project/build.log.1').text
+assert projectBuildLog1.count("[INFO] BUILD SUCCESS") == 1
def projectBuildLog = new File(basedir, 'target/it/project/build.log').text
-
-// The project should be built twice, once for the first run and once for the
rerun.
-assert projectBuildLog.count("[INFO] BUILD SUCCESS") == 2
+assert projectBuildLog.count("[INFO] BUILD SUCCESS") == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/maven-invoker-plugin-3.10.0/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
new/maven-invoker-plugin-3.10.1/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
---
old/maven-invoker-plugin-3.10.0/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
2026-04-22 21:17:38.000000000 +0200
+++
new/maven-invoker-plugin-3.10.1/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
2026-05-02 20:49:24.000000000 +0200
@@ -32,6 +32,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -2097,15 +2098,22 @@
}
Log streamLogger = streamLogs ? getLog() : null;
- File logFile = projectLogDirectory.resolve("build.log").toFile();
+ Path logPath = projectLogDirectory.resolve("build.log");
+
try {
- if (executionCount > 1) {
- logger = new FileLoggerAppender(logFile, streamLogger);
- getLog().debug("Append to build log: " + logFile);
- } else {
- logger = new FileLogger(logFile, streamLogger);
- getLog().debug("New build log initialized: " + logFile);
+ if (executionCount > 1 && Files.exists(logPath)) {
+ // next execution, rename log file from build.log to
build-<executionCount -1 >.log
+ // we preserve log from previous execution, and start with
new log file for current execution
+ // each execution should have new log file as many
assertions check string presence in log file, a
+ // nd if we keep appending to same log file, it will be
hard to determine which log entry belongs to
+ // which execution
+ Path logFileBackup =
+
logPath.getParent().resolve(logPath.getFileName().toString() + "." +
(executionCount - 1));
+ getLog().debug("Renaming existing log file " + logPath + "
to " + logFileBackup);
+ Files.move(logPath, logFileBackup,
StandardCopyOption.REPLACE_EXISTING);
}
+ logger = new FileLogger(logPath.toFile(), streamLogger);
+ getLog().debug("New build log initialized: " + logPath);
} catch (IOException e) {
throw new MojoExecutionException("Error initializing build
logfile in: " + projectLogDirectory, e);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/maven-invoker-plugin-3.10.0/src/main/java/org/apache/maven/plugins/invoker/FileLoggerAppender.java
new/maven-invoker-plugin-3.10.1/src/main/java/org/apache/maven/plugins/invoker/FileLoggerAppender.java
---
old/maven-invoker-plugin-3.10.0/src/main/java/org/apache/maven/plugins/invoker/FileLoggerAppender.java
2026-04-22 21:17:38.000000000 +0200
+++
new/maven-invoker-plugin-3.10.1/src/main/java/org/apache/maven/plugins/invoker/FileLoggerAppender.java
1970-01-01 01:00:00.000000000 +0100
@@ -1,50 +0,0 @@
-/*
- * 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.maven.plugins.invoker;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardOpenOption;
-
-import org.apache.maven.plugin.logging.Log;
-
-/**
- *
- */
-class FileLoggerAppender extends FileLogger {
-
- /**
- * Creates a new logger that appends to the specified file and optionally
mirrors messages to the given mojo logger.
- *
- * @param outputFile The path to the output file, must not be
<code>null</code>.
- * @param log The mojo logger to additionally output messages to, may be
<code>null</code> if not used.
- * @throws IOException If the output file could not be created.
- */
- FileLoggerAppender(File outputFile, final Log log) throws IOException {
- super(outputFile, log);
- }
-
- @Override
- protected OutputStream createOutputStream(Path outputPath) throws
IOException {
- return Files.newOutputStream(outputPath, StandardOpenOption.APPEND,
StandardOpenOption.CREATE);
- }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/maven-invoker-plugin-3.10.0/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
new/maven-invoker-plugin-3.10.1/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
---
old/maven-invoker-plugin-3.10.0/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
2026-04-22 21:17:38.000000000 +0200
+++
new/maven-invoker-plugin-3.10.1/src/main/java/org/apache/maven/plugins/invoker/InvokerSession.java
2026-05-02 20:49:24.000000000 +0200
@@ -22,6 +22,7 @@
import java.io.IOException;
import java.io.Reader;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
@@ -201,21 +202,51 @@
jobToLogs.addAll(errorJobs);
for (BuildJob buildJob : jobToLogs) {
- File buildLogFile = buildJob.getBuildlog() != null ? new
File(buildJob.getBuildlog()) : null;
- if (buildLogFile != null && buildLogFile.exists()) {
+ Path buildLogPath = buildJob.getBuildlog() != null ? new
File(buildJob.getBuildlog()).toPath() : null;
+ if (buildLogPath != null && Files.exists(buildLogPath)) {
try {
// prepare message with build.log in one string to omit
begin [ERROR], [WARN]
// so whole log will be displayed without decoration
StringBuilder buildLogMessage = new StringBuilder();
buildLogMessage.append(System.lineSeparator());
buildLogMessage.append(System.lineSeparator());
- buildLogMessage.append("*** begin build.log for: " +
buildJob.getProject() + " ***");
- buildLogMessage.append(System.lineSeparator());
- try (Reader buildLogReader =
Files.newBufferedReader(buildLogFile.toPath())) {
-
buildLogMessage.append(IOUtil.toString(buildLogReader));
+ buildLogMessage
+ .append("*** begin build.log for: ")
+ .append(buildJob.getProject())
+ .append(" ***")
+ .append(System.lineSeparator());
+
+ if (buildJob.getExecutionCount() > 1) {
+ // try to read build log from each execution
+ for (int executionCount = 1;
+ executionCount <= buildJob.getExecutionCount()
- 1;
+ executionCount++) {
+ // log file name is hardcoded in whole project
+ buildLogMessage
+ .append("*** build.log for execution: ")
+ .append(executionCount)
+ .append(" ***")
+ .append(System.lineSeparator());
+ Path path = buildLogPath
+ .getParent()
+
.resolve(buildLogPath.getFileName().toString() + "." + executionCount);
+ appendLogToMessage(path, buildLogMessage);
+ }
+
+ buildLogMessage
+ .append("*** build.log for execution: ")
+ .append(buildJob.getExecutionCount())
+ .append(" ***")
+ .append(System.lineSeparator());
}
- buildLogMessage.append("*** end build.log for: " +
buildJob.getProject() + " ***");
- buildLogMessage.append(System.lineSeparator());
+
+ appendLogToMessage(buildLogPath, buildLogMessage);
+
+ buildLogMessage
+ .append("*** end build.log for: ")
+ .append(buildJob.getProject())
+ .append(" ***")
+ .append(System.lineSeparator());
logWithLevel(logger, ignoreFailures, SEPARATOR);
logWithLevel(logger, ignoreFailures,
buildLogMessage.toString());
@@ -228,6 +259,14 @@
}
}
}
+
+ private void appendLogToMessage(Path logPath, StringBuilder
buildLogMessage) throws IOException {
+ if (logPath != null && Files.exists(logPath)) {
+ try (Reader buildLogReader = Files.newBufferedReader(logPath)) {
+ buildLogMessage.append(IOUtil.toString(buildLogReader));
+ }
+ }
+ }
/**
* Handles the build failures in this session.