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]

Reply via email to