None, that's just my own class task in buildSrc. It's a fairly trivial wrapper around a ToolProvider invocation of jlink, so I didn't think it was relevant enough to paste the source for that here too, when you could also do it trivially with an Exec task similar to the jpackager ones later in my first reply.

It's literally public class JLink extends DefaultTask with a bunch of getters and setters for the options and a run method that turns them into arguments and invokes via ToolProvider. The same task type is also used elsewhere in the root project to build the server JRE for the server component of this project, which was enough to make it worthwhile writing the task. (I also wanted to learn how to write java gradle tasks.) The point of the example I did paste was just about showing what options to set to jlink. jlink in any detail is offtopic here, this bit was just an illustration of using that to build the JRE first with the required modules, then use the result in jpackager to build a non-modular app.

I would expect to write a similar simple task for jpackager too at some point, I just haven't yet. They may be the basis of a useful packager plugin, but probably not before jpackager itself is more mature.

--
Rachel

On 09/11/2018 21:34, Sverre Moe wrote:
Den fre. 9. nov. 2018 kl. 16:22 skrev Rachel Greenham <rac...@merus.eu <mailto:rac...@merus.eu>>:

    Build the JRE needed using JLink, supplying the needed modules. The
    JLink task referenced is actually written in Java and wraps
    ToolProvider, but it's pretty trivial and could almost-more-easily be
    done with an Exec. NB: The JLink task as written puts it in a "java"
    subdirectory of the given destinationDir.

         task buildAdminJre(type: JLink) {
             description 'Build the Client JRE for ' + nativeOsName
             destinationDir
    rootProject.file("deploy/bindist/"+requiredJava.merusNativeAdminJreName)
             modules = [
                 'java.base',
                 'java.desktop',
                 'java.xml',
                 'java.logging'
             ]
             bindServices false
             modulePath =
    [System.properties.getProperty('java.home')+File.separatorChar+'jmods']
             noHeaderFiles true
             noManPages true
             stripDebug true
         }


Which gradle plugin are you using that gives you type JLink?

Reply via email to