fvarrui / JavaPackager

:package: Gradle/Maven plugin to package Java applications as native Windows, MacOS, or Linux executables and create installers for them.
GNU General Public License v3.0
1.05k stars 132 forks source link

Error when generating DMG file on Mac OS X: Command execution failed: chmod -Rf go-w #71

Closed treimers closed 3 years ago

treimers commented 3 years ago

I'm submitting a…

Hello guys, hello Fran,

first of all I would like to congratulate and thank you for a really awesome work you did.

It was born while teaching to my students ... I decided to develop a plugin 💍 to govern them all.

Great!

The build of our maven project works fine with this plugin after we switched from Java 8 to Java 15.

Only problem I did encounter is the generation of the DMG file under Mac OS X. It works but it shows errors and does not unmount the image file afterwards.

What is the expected behavior?

The mounted DMG file should be unmount after build process ends.

What is the current behavior?

There are error messages during build and the DMG keeps mounted.

Do you have outputs, screenshots, demos or samples which demonstrate the problem or enhancement?

Fine below the output of the plugin invocation. There are some [ERROR] lines, first when waiting for creation of .DS_STORE, later when trying to execute a chmod. I think that the DMG build stops at that moment but maybe I am wrong? At least the DMG disk is not unmounted afterwards:

[INFO] --- javapackager:1.3.0:package (default) @ datasqill ---
[Dependency {groupId=de.softquadrat, artifactId=SQTSLib, version=1.0-SNAPSHOT, type=jar}, Dependency {groupId=de.jensd, artifactId=fontawesomefx-commons, version=9.1.2, type=jar}, Dependency {groupId=de.jensd, artifactId=fontawesomefx-fontawesome, version=4.7.0-9.1.2, type=jar}, Dependency {groupId=org.fxmisc.richtext, artifactId=richtextfx, version=0.10.5, type=jar}, Dependency {groupId=eu.mihosoft.vrl.workflow, artifactId=vworkflows-fx, version=0.2.4.4, type=jar}, Dependency {groupId=com.airhacks, artifactId=afterburner.fx, version=1.7.0, type=jar}, Dependency {groupId=org.controlsfx, artifactId=controlsfx, version=11.0.2, type=jar}, Dependency {groupId=com.sqlinform, artifactId=sqlinform, version=4.9.23, type=jar}, Dependency {groupId=com.fasterxml.jackson.core, artifactId=jackson-databind, version=2.9.8, type=jar}, Dependency {groupId=org.glassfish.jersey.core, artifactId=jersey-client, version=2.26, type=jar}, Dependency {groupId=org.glassfish.jersey.inject, artifactId=jersey-hk2, version=2.26, type=jar}, Dependency {groupId=org.glassfish.jersey.media, artifactId=jersey-media-json-jackson, version=2.26, type=jar}, Dependency {groupId=com.oracle.ojdbc, artifactId=ojdbc8, version=19.3.0.0, type=jar}, Dependency {groupId=com.oracle.ojdbc, artifactId=oraclepki, version=19.3.0.0, type=jar}, Dependency {groupId=com.oracle.ojdbc, artifactId=osdt_cert, version=19.3.0.0, type=jar}, Dependency {groupId=com.oracle.ojdbc, artifactId=osdt_core, version=19.3.0.0, type=jar}, Dependency {groupId=com.h2database, artifactId=h2, version=1.4.199, type=jar}, Dependency {groupId=org.openjfx, artifactId=javafx, version=15, type=pom}, Dependency {groupId=org.openjfx, artifactId=javafx-controls, version=15, type=jar}, Dependency {groupId=org.openjfx, artifactId=javafx-base, version=15, type=jar}, Dependency {groupId=org.openjfx, artifactId=javafx-fxml, version=15, type=jar}, Dependency {groupId=jakarta.xml.bind, artifactId=jakarta.xml.bind-api, version=2.3.2, type=jar}, Dependency {groupId=org.glassfish.jaxb, artifactId=jaxb-runtime, version=2.3.2, type=jar}, Dependency {groupId=com.sun.activation, artifactId=jakarta.activation, version=2.0.0-RC3, type=jar}, Dependency {groupId=junit, artifactId=junit, version=4.11, type=jar}, Dependency {groupId=org.mockito, artifactId=mockito-all, version=1.9.5, type=jar}]
[INFO] Using packager io.github.fvarrui.javapackager.packagers.MacPackager
[INFO] Creating app ...
[INFO]     Initializing packager ...
[INFO]         Effective packager configuration [appFolder=null, assetsFolder=null, executable=null, jarFile=null, executableDestinationFolder=null, jarFileDestinationFolder=null, jreDestinationFolder=null, resourcesDestinationFolder=null, outputDirectory=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target, licenseFile=null, iconFile=null, generateInstaller=true, mainClass=de.softquadrat.workbench.gui.Launcher, name=datasqill, displayName=datasqill, version=3.4.6, description=SoftQuadrat datasqill Workbench, url=http://www.datasqill.de, administratorRequired=false, organizationName=SoftQuadrat GmbH, organizationUrl=, organizationEmail=null, bundleJre=true, customizedJre=true, jrePath=null, additionalResources=[], modules=[], additionalModules=[jdk.security.auth], platform=mac, envPath=null, vmArgs=[], runnableJar=null, copyDependencies=true, jreDirectoryName=jre, winConfig=null, linuxConfig=null, macConfig=MacConfig [icnsFile=null, backgroundImage=null, windowWidth=540, windowHeight=360, windowX=10, windowY=60, iconSize=128, textSize=16, iconX=52, iconY=116, appsLinkIconX=360, appsLinkIconY=116, volumeIcon=null, volumeName=null, generateDmg=true, generatePkg=true], createTarball=false, createZipball=false, extra={}, useResourcesAsWorkingDir=true, assetsDir=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package]
[INFO]     Packager initialized!
[INFO]     
[INFO]     Creating app structure ...
[INFO]         App folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill
[INFO]         Assets folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets
[INFO]         App file folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app
[INFO]         Contents folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents
[INFO]         Resources folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources
[INFO]         Java folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java
[INFO]         MacOS folder created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/MacOS
[INFO]     App structure created!
[INFO]     
[INFO]     Resolving resources ...
[INFO]         Trying to resolve license from POM ...
[INFO]         License not resolved!
[INFO]         
[WARNING]         No license file specified
[INFO]         Icon file resolved: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns
[INFO]         Effective additional resources [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns]
[INFO]     Resources resolved!
[INFO]     
[INFO]     Copying additional resources
[INFO]         Copying file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns] to folder [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources]
[INFO]     All additional resources copied!
[INFO]     
[INFO]     Copying all dependencies ...
[INFO] Copying SQTSLib-1.0-SNAPSHOT.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/SQTSLib-1.0-SNAPSHOT.jar
[INFO] Copying jackson-jaxrs-json-provider-2.9.8.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jackson-jaxrs-json-provider-2.9.8.jar
[INFO] Copying jackson-jaxrs-base-2.9.8.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jackson-jaxrs-base-2.9.8.jar
[INFO] Copying javax.mail-1.6.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javax.mail-1.6.2.jar
[INFO] Copying activation-1.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/activation-1.1.jar
[INFO] Copying hjson-3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/hjson-3.0.0.jar
[INFO] Copying freemarker-2.3.29.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/freemarker-2.3.29.jar
[INFO] Copying fontawesomefx-commons-9.1.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/fontawesomefx-commons-9.1.2.jar
[INFO] Copying fontawesomefx-fontawesome-4.7.0-9.1.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/fontawesomefx-fontawesome-4.7.0-9.1.2.jar
[INFO] Copying richtextfx-0.10.5.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/richtextfx-0.10.5.jar
[INFO] Copying reactfx-2.0-M5.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/reactfx-2.0-M5.jar
[INFO] Copying undofx-2.1.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/undofx-2.1.0.jar
[INFO] Copying flowless-0.6.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/flowless-0.6.1.jar
[INFO] Copying wellbehavedfx-0.3.3.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/wellbehavedfx-0.3.3.jar
[INFO] Copying vworkflows-fx-0.2.4.4.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/vworkflows-fx-0.2.4.4.jar
[INFO] Copying vworkflows-core-0.2.4.4.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/vworkflows-core-0.2.4.4.jar
[INFO] Copying xstream-1.4.9.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/xstream-1.4.9.jar
[INFO] Copying xmlpull-1.1.3.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/xmlpull-1.1.3.1.jar
[INFO] Copying xpp3_min-1.1.4c.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/xpp3_min-1.1.4c.jar
[INFO] Copying jung-api-2.0.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jung-api-2.0.1.jar
[INFO] Copying collections-generic-4.01.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/collections-generic-4.01.jar
[INFO] Copying jung-graph-impl-2.0.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jung-graph-impl-2.0.1.jar
[INFO] Copying jung-algorithms-2.0.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jung-algorithms-2.0.1.jar
[INFO] Copying colt-1.2.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/colt-1.2.0.jar
[INFO] Copying concurrent-1.3.4.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/concurrent-1.3.4.jar
[INFO] Copying jung-visualization-2.0.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jung-visualization-2.0.1.jar
[INFO] Copying commons-collections4-4.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/commons-collections4-4.1.jar
[INFO] Copying commons-math3-3.6.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/commons-math3-3.6.1.jar
[INFO] Copying scaledfx-0.4.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/scaledfx-0.4.jar
[INFO] Copying afterburner.fx-1.7.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/afterburner.fx-1.7.0.jar
[INFO] Copying controlsfx-11.0.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/controlsfx-11.0.2.jar
[INFO] Copying javafx-graphics-11.0.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-graphics-11.0.2.jar
[INFO] Copying javafx-graphics-11.0.2-mac.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-graphics-11.0.2-mac.jar
[INFO] Copying javafx-media-11.0.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-media-11.0.2.jar
[INFO] Copying javafx-media-11.0.2-mac.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-media-11.0.2-mac.jar
[INFO] Copying sqlinform-4.9.23.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/sqlinform-4.9.23.jar
[INFO] Copying jackson-databind-2.9.8.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jackson-databind-2.9.8.jar
[INFO] Copying jackson-annotations-2.9.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jackson-annotations-2.9.0.jar
[INFO] Copying jackson-core-2.9.8.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jackson-core-2.9.8.jar
[INFO] Copying jersey-client-2.26.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jersey-client-2.26.jar
[INFO] Copying javax.ws.rs-api-2.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javax.ws.rs-api-2.1.jar
[INFO] Copying jersey-common-2.26.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jersey-common-2.26.jar
[INFO] Copying javax.annotation-api-1.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javax.annotation-api-1.2.jar
[INFO] Copying osgi-resource-locator-1.0.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/osgi-resource-locator-1.0.1.jar
[INFO] Copying javax.inject-2.5.0-b42.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javax.inject-2.5.0-b42.jar
[INFO] Copying jersey-hk2-2.26.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jersey-hk2-2.26.jar
[INFO] Copying hk2-locator-2.5.0-b42.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/hk2-locator-2.5.0-b42.jar
[INFO] Copying aopalliance-repackaged-2.5.0-b42.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/aopalliance-repackaged-2.5.0-b42.jar
[INFO] Copying hk2-api-2.5.0-b42.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/hk2-api-2.5.0-b42.jar
[INFO] Copying javax.inject-1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javax.inject-1.jar
[INFO] Copying hk2-utils-2.5.0-b42.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/hk2-utils-2.5.0-b42.jar
[INFO] Copying javassist-3.22.0-CR2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javassist-3.22.0-CR2.jar
[INFO] Copying jersey-media-json-jackson-2.26.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jersey-media-json-jackson-2.26.jar
[INFO] Copying jersey-entity-filtering-2.26.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jersey-entity-filtering-2.26.jar
[INFO] Copying jackson-module-jaxb-annotations-2.8.4.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jackson-module-jaxb-annotations-2.8.4.jar
[INFO] Copying ojdbc8-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/ojdbc8-19.3.0.0.jar
[INFO] Copying ucp-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/ucp-19.3.0.0.jar
[INFO] Copying simplefan-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/simplefan-19.3.0.0.jar
[INFO] Copying ons-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/ons-19.3.0.0.jar
[INFO] Copying oraclepki-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/oraclepki-19.3.0.0.jar
[INFO] Copying osdt_cert-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/osdt_cert-19.3.0.0.jar
[INFO] Copying osdt_core-19.3.0.0.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/osdt_core-19.3.0.0.jar
[INFO] Copying h2-1.4.199.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/h2-1.4.199.jar
[INFO] Copying javafx-15.pom to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-15.pom
[INFO] Copying javafx-controls-15.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-controls-15.jar
[INFO] Copying javafx-controls-15-mac.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-controls-15-mac.jar
[INFO] Copying javafx-base-15.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-base-15.jar
[INFO] Copying javafx-base-15-mac.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-base-15-mac.jar
[INFO] Copying javafx-fxml-15.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-fxml-15.jar
[INFO] Copying javafx-fxml-15-mac.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/javafx-fxml-15-mac.jar
[INFO] Copying jakarta.xml.bind-api-2.3.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jakarta.xml.bind-api-2.3.2.jar
[INFO] Copying jakarta.activation-api-1.2.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jakarta.activation-api-1.2.1.jar
[INFO] Copying jaxb-runtime-2.3.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jaxb-runtime-2.3.2.jar
[INFO] Copying txw2-2.3.2.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/txw2-2.3.2.jar
[INFO] Copying istack-commons-runtime-3.0.8.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/istack-commons-runtime-3.0.8.jar
[INFO] Copying stax-ex-1.8.1.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/stax-ex-1.8.1.jar
[INFO] Copying FastInfoset-1.2.16.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/FastInfoset-1.2.16.jar
[INFO] Copying jakarta.activation-2.0.0-RC3.jar to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/jakarta.activation-2.0.0-RC3.jar
[INFO]     Dependencies copied to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs!
[INFO]     
[INFO]     Creating runnable JAR...
[INFO] Building jar: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill-3.4.6-runnable.jar
[INFO]     Runnable jar created in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill-3.4.6-runnable.jar!
[INFO]     
[INFO]     Bundling JRE ... with /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
[INFO]         Creating customized JRE ...
[INFO]         Getting required modules ... 
[INFO]             Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && '/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/bin/jdeps' -q --multi-release 15 --ignore-missing-deps --print-module-deps /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java/libs/*.jar /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill-3.4.6-runnable.jar
[INFO]             java.base,java.compiler,java.desktop,java.instrument,java.prefs,java.rmi,java.scripting,java.security.sasl,java.sql.rowset,jdk.attach,jdk.jdi,jdk.jfr,jdk.management,jdk.security.jgss,jdk.unsupported
[INFO]         Required modules found: [java.base, java.compiler, java.desktop, java.instrument, java.prefs, java.rmi, java.scripting, java.security.sasl, java.sql.rowset, jdk.attach, jdk.jdi, jdk.jfr, jdk.management, jdk.security.jgss, jdk.unsupported, jdk.security.auth]
[INFO]         
[INFO]         Creating JRE with next modules included: java.base,java.compiler,java.desktop,java.instrument,java.prefs,java.rmi,java.scripting,java.security.sasl,java.sql.rowset,jdk.attach,jdk.jdi,jdk.jfr,jdk.management,jdk.security.jgss,jdk.unsupported,jdk.security.auth
[INFO]         Using /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/jmods modules directory
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && '/Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/bin/jlink' --module-path /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home/jmods --add-modules java.base,java.compiler,java.desktop,java.instrument,java.prefs,java.rmi,java.scripting,java.security.sasl,java.sql.rowset,jdk.attach,jdk.jdi,jdk.jfr,jdk.management,jdk.security.jgss,jdk.unsupported,jdk.security.auth --output /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/PlugIns/jre/Contents/Home --no-header-files --no-man-pages --strip-debug --compress=2
[INFO]         Removing folder [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/PlugIns/jre/Contents/Home/legal]
[INFO]     JRE bundled in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/PlugIns/jre/Contents/Home!
[INFO]     
[INFO]     Copying file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill-3.4.6-runnable.jar] to folder [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java]
[INFO]     Startup script file created in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/MacOS/startup
[INFO]     Copying resource [/mac/universalJavaApplicationStub] to file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/MacOS/universalJavaApplicationStub]
[INFO]     Info.plist file created in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Info.plist
[INFO]     Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'codesign' --force --deep --sign - /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app
[INFO] App created in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill!
[INFO] 
[INFO] Generating installers ...
[INFO]     Initializing packager ...
[INFO]         Effective packager configuration [appFolder=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill, assetsFolder=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets, executable=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/MacOS/startup, jarFile=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill-3.4.6-runnable.jar, executableDestinationFolder=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/MacOS, jarFileDestinationFolder=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources/Java, jreDestinationFolder=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/PlugIns/jre/Contents/Home, resourcesDestinationFolder=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app/Contents/Resources, outputDirectory=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target, licenseFile=null, iconFile=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns, generateInstaller=true, mainClass=de.softquadrat.workbench.gui.Launcher, name=datasqill, displayName=datasqill, version=3.4.6, description=SoftQuadrat datasqill Workbench, url=http://www.datasqill.de, administratorRequired=false, organizationName=SoftQuadrat GmbH, organizationUrl=, organizationEmail=null, bundleJre=true, customizedJre=true, jrePath=null, additionalResources=[/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns], modules=[], additionalModules=[jdk.security.auth], platform=mac, envPath=null, vmArgs=[], runnableJar=null, copyDependencies=true, jreDirectoryName=jre, winConfig=null, linuxConfig=null, macConfig=MacConfig [icnsFile=null, backgroundImage=null, windowWidth=540, windowHeight=360, windowX=10, windowY=60, iconSize=128, textSize=16, iconX=52, iconY=116, appsLinkIconX=360, appsLinkIconY=116, volumeIcon=null, volumeName=null, generateDmg=true, generatePkg=true], createTarball=false, createZipball=false, extra={}, useResourcesAsWorkingDir=true, assetsDir=/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package]
[INFO]     Packager initialized!
[INFO]     
[INFO]     Generating DMG image...
[INFO]         Creating Applications link
[INFO]         Creating symbolic link [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/Applications] to [/Applications]
[INFO]         Copying background image
[INFO]         Copying resource [/mac/background.png] to file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/.background/background.png]
[INFO]         Copying icon file: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns
[INFO]         Copying file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns] to folder [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/.VolumeIcon.icns]
[INFO]         Creating image: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'hdiutil' create -srcfolder /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill -volname datasqill -fs HFS+ -format UDRW /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         Mounting image: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'hdiutil' attach -readwrite -noverify -noautoopen /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         /dev/disk5           GUID_partition_scheme           
[INFO]         /dev/disk5s1         Apple_HFS                       /Volumes/datasqill
[INFO]         - Device name: /dev/disk5s1
[INFO]         Rendering DMG customization applescript ... 
[INFO]         Applescript rendered in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/customize-dmg.applescript!
[INFO]         Running applescript
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && '/usr/bin/osascript' /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/customize-dmg.applescript datasqill
[ERROR]         waited 1 seconds for .DS_STORE to be created.
[INFO]         Fixing permissions...
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'chmod' -Rf go-w /Volumes/datasqill
[ERROR]         chmod: /Volumes/datasqill/.Trashes: Permission denied
[ERROR]     DMG image generation failed due to: Command execution failed: chmod -Rf go-w /Volumes/datasqill
[INFO]     
[INFO]     Generating PKG installer...
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'pkgbuild' --install-location /Applications --component /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.pkg
[INFO]         pkgbuild: Adding component at /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/datasqill.app
[INFO]         pkgbuild: Wrote package to /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.pkg
[INFO]     PKG installer generated in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.pkg!
[INFO]     
[INFO] Installers generated! [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.pkg]
[INFO] 
[INFO] Creating bundles ...
[INFO] Bundles created!
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:09 min
[INFO] Finished at: 2020-11-03T18:20:50+01:00
[INFO] ------------------------------------------------------------------------

Please tell us about your environment:

Thanks for any help in advance!

fvarrui commented 3 years ago

Hi @treimers! It seems that there's a .Trashes folder, and you don't have permissions to set the writing permissions:

Excuse me the redundance 😄

[INFO] Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'chmod' -Rf go-w /Volumes/datasqill
[ERROR] chmod: /Volumes/datasqill/.Trashes: Permission denied

I think it's because you are not the owner of that folder, and as far as I know, only the owner or root can change permissions of a file/folder. I suppose that it's created by the OS, but I'm not sure why it's there.

treimers commented 3 years ago

Hi @fvarrui,

thank you for your response.

Yes, you are right, I do not have permission to change that folder. But this is the mounted DMG image under Mac OS X and the .Trashes folder is created automatically during the image build.

When I execute an "ls" I can see that I do not have read rights:

$ ls -la /Volumes/datasqill
total 528
drwxr-xr-x  9 treimers  staff     374  3 Nov 20:02 .
drwxrwxrwt@ 4 root      admin     204  3 Nov 20:02 ..
-rw-r--r--@ 1 treimers  staff   10244  3 Nov 20:02 .DS_Store
d-wx--x--t  2 treimers  staff      68  3 Nov 20:02 .Trashes
-rw-r--r--  1 treimers  staff  253781  3 Nov 14:48 .VolumeIcon.icns
drwxr-xr-x  3 treimers  staff     102  3 Nov 20:02 .background
drwx------  3 treimers  staff     102  3 Nov 20:02 .fseventsd
lrwxr-xr-x  1 treimers  staff      13  3 Nov 20:02 Applications -> /Applications
drwxr-xr-x  3 treimers  staff     102  3 Nov 20:02 datasqill.app

I am able to set read permissions manually and executed the failing command successfully afterwards:

$ chmod -t,u+r /Volumes/datasqill/.Trashes
$ chmod -Rf go-w /Volumes/datasqill

I replaced chmod in my environment and the build was successful afterwards

$ echo '/bin/chmod $@' > chmod
$ echo 'exit 0' >> chmod
$ chmod +x chmod
$ export PATH=.:$PATH
$ mvn clean package
...
[INFO]     Generating DMG image...
[INFO]         Creating Applications link
[INFO]         Creating symbolic link [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/Applications] to [/Applications]
[INFO]         Copying background image
[INFO]         Copying resource [/mac/background.png] to file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/.background/background.png]
[INFO]         Copying icon file: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns
[INFO]         Copying file [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/src/main/deploy/package/mac/datasqill.icns] to folder [/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill/.VolumeIcon.icns]
[INFO]         Creating image: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'hdiutil' create -srcfolder /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill -volname datasqill -fs HFS+ -format UDRW /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         Mounting image: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'hdiutil' attach -readwrite -noverify -noautoopen /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg
[INFO]         /dev/disk5           GUID_partition_scheme           
[INFO]         /dev/disk5s1         Apple_HFS                       /Volumes/datasqill
[INFO]         - Device name: /dev/disk5s1
[INFO]         Rendering DMG customization applescript ... 
[INFO]         Applescript rendered in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/customize-dmg.applescript!
[INFO]         Running applescript
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && '/usr/bin/osascript' /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/customize-dmg.applescript datasqill
[ERROR]         waited 1 seconds for .DS_STORE to be created.
[INFO]         Fixing permissions...
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'chmod' -Rf go-w /Volumes/datasqill
[ERROR]         chmod: /Volumes/datasqill/.Trashes: Permission denied
[INFO]         Blessing ...
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'bless' --folder /Volumes/datasqill --openfolder /Volumes/datasqill
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'SetFile' -a C /Volumes/datasqill
[INFO]         Unmounting disk image...
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'hdiutil' detach /dev/disk5s1
[INFO]         "disk5" unmounted.
[INFO]         "disk5" ejected.
[INFO]         Compressing disk image...
[INFO]         Executing command: /bin/sh -c cd '/Users/treimers/Documents/datasqill/git/datasqillj15/workbench/.' && 'hdiutil' convert /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/assets/datasqill_3.4.6.dmg -format UDZO -imagekey zlib-level=9 -o /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.dmg
[INFO]         Image-Funktion vorbereiten …
[INFO]         Protective Master Boot Record (MBR : 0) lesen …
[INFO]            (CRC32 $2A3B1E28: Protective Master Boot Record (MBR : 0))
[INFO]         GPT Header (Primary GPT Header : 1) lesen …
[INFO]            (CRC32 $1E051F54: GPT Header (Primary GPT Header : 1))
[INFO]         GPT Partition Data (Primary GPT Table : 2) lesen …
[INFO]            (CRC32 $81B10735: GPT Partition Data (Primary GPT Table : 2))
[INFO]          (Apple_Free : 3) lesen …
[INFO]            (CRC32 $00000000:  (Apple_Free : 3))
[INFO]         disk image (Apple_HFS : 4) lesen …
[INFO]            (CRC32 $9AF1250C: disk image (Apple_HFS : 4))
[INFO]         GPT Partition Data (Backup GPT Table : 5) lesen …
[INFO]            (CRC32 $81B10735: GPT Partition Data (Backup GPT Table : 5))
[INFO]         GPT Header (Backup GPT Header : 6) lesen …
[INFO]            (CRC32 $D0A74789: GPT Header (Backup GPT Header : 6))
[INFO]         Ressourcen hinzufügen …
[INFO]         Dauer:  2.977s
[INFO]         Dateigröße: 66844179 Byte, Prüfsumme: CRC32 $4EB9F966
[INFO]         Bearbeitete Sektoren: 208113, 175428 komprimiert
[INFO]         Geschwindigkeit: 28.8M Byte/s
[INFO]         Ersparnis: 37.3 %
[INFO]         created: /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.dmg
[INFO]     DMG image generated in /Users/treimers/Documents/datasqill/git/datasqillj15/workbench/target/datasqill_3.4.6.dmg!

I do not know why the .Trashes folder is not readable in my environment. Maybe I have some special set up or some strange software installation on my machine. I don't know, I will try to figure out.

treimers commented 3 years ago

I now tried two other Mac OS X computers, both running High Sierra, 10.13.6. The problem does not show on these other computers and I verified that the .Trashes folder is not created on them.

I do not understand what creates the .Trashes folder on my computer and why it is not readable by the owner.

Do you guys think it would be possible to add an enhancement to the class GenerateDmg?!

Instead of

CommandUtils.execute("chmod", "-Rf", "go-w", mountFolder);

it would help in my case to run

CommandUtils.execute("chmod", "-Rf", "u+r,go-w", mountFolder);

If you agree I can prepare that change and create a pull request for it.

Thanks in advance!

fvarrui commented 3 years ago

Hi @treimers! Are you sure that setting the read permissions would solve your problem?

A PR will be welcomed ... but, please, check first that this modification solves the problem.

I'll been doing some research about .Trashes folder creation, and it seems it's related to Spotlight service. I haven't test it, but this should prevent Spotlight from creating the .Trashes folder on all mounted volumes:

sudo mdutil -a -i off

Thanks!

treimers commented 3 years ago

Hi @fvarrui,

yes, I think this will help. I created a test script to investigate

set -x
rm datasqill_3.4.6.dmg
hdiutil create -srcfolder mysources -volname datasqill -fs HFS+ -format UDRW datasqill_3.4.6.dmg
hdiutil attach -readwrite -noverify -noautoopen datasqill_3.4.6.dmg
osascript customize-dmg.applescript datasqill
chmod -Rf go-w /Volumes/datasqill
if [[ $? -ne 0 ]]
then
    exit 0
fi
hdiutil eject /Volumes/datasqill

This fails as well but when changing to

chmod -Rf u+r,go-w /Volumes/datasqill

it worked on my computer.

BTW: I tried another Mac Book running El Capitan, same effect. Maybe this is related to OS version.

I tried your proposal with Spotlight but it did not help. Thanks for that!

I also did a complete disk check in recovery mode on my machine. There were smaller repairs but it did not change the behaviour at the end.

So, I would be glad to create a patch and a pull request. I shall come back to you afterwards.

fvarrui commented 3 years ago

Don't worry about the PR ... I'm right now implementing another requested feature and can apply your change.

It will appear published in v1.4.0.

fvarrui commented 3 years ago

v1.4.0 released to Maven Central