This is an automated email from the ASF dual-hosted git repository.
mariofusco pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
The following commit(s) were added to refs/heads/main by this push:
new 011fbbde73 [KIE-859] make drools quarkus extension build reproducible
(#5666)
011fbbde73 is described below
commit 011fbbde7347f85fd24d478c7ced39bb9c7e0c0c
Author: Mario Fusco <[email protected]>
AuthorDate: Fri Jan 26 14:34:21 2024 +0100
[KIE-859] make drools quarkus extension build reproducible (#5666)
* [KIE-859] make drools quarkus extension build reproducible
* add comments
* replace shell script with java main
---
.../drools-quarkus-deployment/pom.xml | 23 ++++++++++++++++++
drools-quarkus-extension/drools-quarkus/pom.xml | 23 ++++++++++++++++++
.../java/org/drools/util/RemoveCommentsMain.java | 27 ++++++++++++++++++++++
.../java/org/drools/util/RemoveCommentsTest.java | 15 ++++++++++++
.../src/test/resources/commented.properties | 4 ++++
5 files changed, 92 insertions(+)
diff --git a/drools-quarkus-extension/drools-quarkus-deployment/pom.xml
b/drools-quarkus-extension/drools-quarkus-deployment/pom.xml
index 0b46a52cb8..f4342cfb36 100644
--- a/drools-quarkus-extension/drools-quarkus-deployment/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus-deployment/pom.xml
@@ -178,6 +178,29 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <!-- Remove comments from META-INF/quarkus-javadoc.properties -->
+ <!-- This is needed because the file generated by quarkus contains
a timestamp in a comment that makes the build not reproducible -->
+ <!-- This workaround can be removed when drools will be migrated
to quarkus release containing this fix
https://github.com/quarkusio/quarkus/pull/38365 -->
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.1.1</version>
+ <executions>
+ <execution>
+ <id>Run Script</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ <configuration>
+ <mainClass>org.drools.util.RemoveCommentsMain</mainClass>
+ <arguments>
+
<argument>${project.basedir}/target/classes/META-INF/quarkus-javadoc.properties</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/drools-quarkus-extension/drools-quarkus/pom.xml
b/drools-quarkus-extension/drools-quarkus/pom.xml
index 240bc88c39..75ef13e08a 100644
--- a/drools-quarkus-extension/drools-quarkus/pom.xml
+++ b/drools-quarkus-extension/drools-quarkus/pom.xml
@@ -147,6 +147,29 @@
<groupId>io.smallrye</groupId>
<artifactId>jandex-maven-plugin</artifactId>
</plugin>
+ <plugin>
+ <!-- Remove comments from
META-INF/quarkus-extension.properties -->
+ <!-- This is needed because the file generated by quarkus
contains a timestamp in a comment that makes the build not reproducible -->
+ <!-- This workaround can be removed when drools will be
migrated to quarkus release containing this fix
https://github.com/quarkusio/quarkus/pull/38365 -->
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.1.1</version>
+ <executions>
+ <execution>
+ <id>Run Script</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ <configuration>
+
<mainClass>org.drools.util.RemoveCommentsMain</mainClass>
+ <arguments>
+
<argument>${project.basedir}/target/classes/META-INF/quarkus-extension.properties</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/drools-util/src/main/java/org/drools/util/RemoveCommentsMain.java
b/drools-util/src/main/java/org/drools/util/RemoveCommentsMain.java
new file mode 100644
index 0000000000..7cc1479306
--- /dev/null
+++ b/drools-util/src/main/java/org/drools/util/RemoveCommentsMain.java
@@ -0,0 +1,27 @@
+package org.drools.util;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.stream.Collectors;
+
+public class RemoveCommentsMain {
+
+ public static void main(String[] args) {
+ String fileName = args[0];
+ try {
+ Files.write(Path.of(fileName),
removeComments(fileName).getBytes());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ static String removeComments(String fileName) {
+ try (var lines = Files.lines(Path.of(fileName))) {
+ return lines.filter(line ->
!line.startsWith("#")).collect(Collectors.joining("\n"));
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/drools-util/src/test/java/org/drools/util/RemoveCommentsTest.java
b/drools-util/src/test/java/org/drools/util/RemoveCommentsTest.java
new file mode 100644
index 0000000000..91bbceba3d
--- /dev/null
+++ b/drools-util/src/test/java/org/drools/util/RemoveCommentsTest.java
@@ -0,0 +1,15 @@
+package org.drools.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class RemoveCommentsTest {
+
+ @Test
+ public void test() {
+ String result =
RemoveCommentsMain.removeComments("src/test/resources/commented.properties");
+ String expected =
"provides-capabilities=org.drools.drl\ndeployment-artifact=org.drools\\:drools-quarkus-deployment\\:999-SNAPSHOT";
+ assertEquals(expected, result);
+ }
+}
diff --git a/drools-util/src/test/resources/commented.properties
b/drools-util/src/test/resources/commented.properties
new file mode 100644
index 0000000000..5bec8eb63a
--- /dev/null
+++ b/drools-util/src/test/resources/commented.properties
@@ -0,0 +1,4 @@
+# Test comment
+provides-capabilities=org.drools.drl
+# Timestamp: 2024-01-26T15:00:00.000+02:00
+deployment-artifact=org.drools\:drools-quarkus-deployment\:999-SNAPSHOT
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]