Til7701 opened a new issue, #602:
URL: https://github.com/apache/maven-jlink-plugin/issues/602

   ### New feature, improvement proposal
   
   JLink has a lot of plugins. Some of them have been added to this Maven 
plugin (#513 #539). However not all plugins are supported jet.
   
   As of JDK 24 some more plugins have been documented: 
https://docs.oracle.com/en/java/javase/24/docs/specs/man/jlink.html
   - `--order-resources=pattern-list`
   - `--generate-cds-archive`
   
   There are also some more plugins which are not documented and thus subject 
to change. You can list them with `jlink --list-plugins`. The Oracle OpenJDK 24 
gives me the following list.
   
   ```
   List of available plugins:
     --add-options <options>   Prepend the specified <options> string, which may
                               include whitespace, before any other options when
                               invoking the virtual machine in the resulting 
image.
     --compress <compress>     Compression to use in compressing resources:
                               Accepted values are:
                               zip-[0-9], where zip-0 provides no compression,
                               and zip-9 provides the best compression.
                               Default is zip-6.
     --dedup-legal-notices [error-if-not-same-content]
                               De-duplicate all legal notices.
                               If error-if-not-same-content is specified then
                               it will be an error if two files of the same
                               filename are different.
     --exclude-files <pattern-list>
                               Specify files to exclude.
                               e.g.: **.java,glob:/java.base/lib/client/**
     --exclude-jmod-section <section-name>
                               Specify a JMOD section to exclude.
                               Where <section-name> is "man" or "headers".
     --exclude-resources <pattern-list>
                               Specify resources to exclude.
                               e.g.: **.jcov,glob:**/META-INF/**
     --generate-cds-archive    Generate CDS archive if the runtime image 
supports
                               the CDS feature.
     --generate-jli-classes @filename
                               Specify a file listing the java.lang.invoke
                               classes to pre-generate. By default, this plugin
                               may use a builtin list of classes to 
pre-generate.
                               If this plugin runs on a different runtime 
version
                               than the image being created then code generation
                               will be disabled by default to guarantee
                               correctness add ignore-version=true
                               to override this.
     --include-locales <langtag>[,<langtag>]*
                               BCP 47 language tags separated by a comma,
                               allowing
                               locale matching defined in RFC 4647.
                               e.g.: en,ja,*-IN
     --order-resources <pattern-list>
                               Order resources.
                               e.g.: **/module-info.class,@classlist,
                               /java.base/java/lang/**
     --release-info <file>|add:<key1>=<value1>:<key2>=<value2>:...|del:<key 
list>
                               <file> option is to load release properties from
                               the supplied file.
                               add: is to add properties to the release file.
                               Any number of <key>=<value> pairs can be passed.
                               del: is to delete the list of keys in release 
file.
     --save-jlink-argfiles <filenames>
                               Save the specified argument files that contain
                               the arguments to be prepended to the execution of
                               jlink in the output image. <filenames> is a
                               : (; on Windows) separated list of command-line 
argument files.
     --strip-debug             Strip debug information from the output image
     --strip-java-debug-attributes
                               Strip Java debug attributes from
                               classes in the output image
     --strip-native-commands   Exclude native commands (such as java/java.exe)
                               from the image.
     --system-modules [batch-size=<N>]
                               The batch size specifies the maximum number of 
modules
                               be handled in one method to workaround if the 
generated
                               bytecode exceeds the method size limit. The 
default
                               batch size is 75.
     --vendor-bug-url <vendor-bug-url>
                               Override the vendor bug URL baked into the build.
                               The value of the system property
                               "java.vendor.url.bug" will be <vendor-url-bug>.
     --vendor-version <vendor-version>
                               Override the vendor version string baked into the
                               build,if any. The value of the system property
                               "java.vendor.version" will be <vendor-version>.
     --vendor-vm-bug-url <vendor-vm-bug-url>
                               Override the vendor VM bug URL baked
                               into the build.  The URL displayed in VM error
                               logs will be <vendor-vm-bug-url>.
     --vm <client|server|minimal|all>
                               Select the HotSpot VM in the output image.
                               Default is all
   
   For options requiring a <pattern-list>, the value will be a comma separated
   list of elements each using one the following forms:
     <glob-pattern>
     glob:<glob-pattern>
     regex:<regex-pattern>
     @<filename> where filename is the name of a file containing patterns to be
                 used, one pattern per line
   ```
   
   Some of them like `--strip-native-commands` and `--release-info` are not 
documented and thus subject to change. Still, it would be nice to be able to 
use those options. Since they are subject to change, maybe this Maven plugin 
could get an option to add those options without explicit support in case the 
changes break the plugin.
   
   ```xml
   <plugin>
       <artifactId>maven-jlink-plugin</artifactId>
       <version>3.2.0</version>
       <extensions>true</extensions>
       <configuration>
           <otherArgs>--strip-native-commands</otherArgs>
       </configuration>
   </plugin>
   ```
   
   On the other hand the `-vm` option is also an undocumented plugin which has 
been added explicitly to this Maven plugin in #539 
   So maybe we could add all undocumented plugins explicitly.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to