You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by sl...@apache.org on 2024/01/17 18:37:10 UTC

(daffodil) branch main updated: Include the crossVersion in daffodil jars packaged in tar/zip/RPM

This is an automated email from the ASF dual-hosted git repository.

slawrence pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil.git


The following commit(s) were added to refs/heads/main by this push:
     new fd7005995 Include the crossVersion in daffodil jars packaged in tar/zip/RPM
fd7005995 is described below

commit fd7005995850cb72af9a58e4eb1d38b30db183a8
Author: Steve Lawrence <sl...@owlcyberdefense.com>
AuthorDate: Wed Jan 17 12:57:30 2024 -0500

    Include the crossVersion in daffodil jars packaged in tar/zip/RPM
    
    The sbt-native-packager plugin does not include the crossVersion in the
    Daffodil jars that it packages in tar/zip/RPM/etc. This could be useful
    for more easily comparing jars from maven (which do include the
    crossVersion) or creating a local Ivy/maven repo.
    
    The plugin does not have an configuration option to set this, so this
    directly modifies the mappings that the plugin creates to include the
    crossVersion for Daffodil jars only.
    
    For example, a package mapping that was previously this:
    
      lib/org.apache.daffodil.daffodil-lib-3.7.0.jar
    
    is now changed to this:
    
      lib/org.apache.daffodil.daffodil-lib_2.12-3.7.0.jar
    
    DAFFODIL-2849
---
 daffodil-cli/build.sbt | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/daffodil-cli/build.sbt b/daffodil-cli/build.sbt
index 23820583b..d336fb057 100644
--- a/daffodil-cli/build.sbt
+++ b/daffodil-cli/build.sbt
@@ -36,6 +36,22 @@ Universal / mappings ++= Seq(
   baseDirectory.value / "README.md" -> "README.md",
 )
 
+// When the sbt-native-packger plugin creates a tar/zip/RPM/etc, it does not include the
+// crossVersion in mapping of jars built from this project (i.e. org.apache.daffodil jars only).
+// There are cases where this crossVersion would be useful (e.g. consistency with Ivy jar names
+// that do include the crossVersion), so this modifies the mapping to include that. Note that
+// the name of the path already has what we need, we just need to prepend "lib/" and our
+// organization.
+Universal / mappings := (Universal / mappings).value.map { case (path, mapping) =>
+  val thisProjectJarPrefix = "lib/" + organization.value + "."
+  val newMapping =
+    if (mapping.startsWith(thisProjectJarPrefix))
+      thisProjectJarPrefix + path.getName
+    else
+      mapping
+  (path, newMapping)
+}
+
 maintainer := "Apache Daffodil <de...@daffodil.apache.org>"
 
 //