Giter Club home page Giter Club logo

moditect's Issues

Allow specifying where to put module-info

I have a problem that early versions of Jandex can't handle JAR files containing a module-info.class. It is fixed in newer versions, but since it is possible to put the module-info.class to META-INF/versions/9 I would rather do that to avoid forcing my users to update their dependencies. I suggest adding a new configuration parameter to add-module-info that takes the JDK version where the module-info should be put to. I can create a PR for that if you agree this is a good solution.

Issue resolving jmods dir when cross linking from linux to a windows JDK

There is a little problem resolving the jmods directory of the target JDK when attempting to cross-link from linux to a windows JDK. The windows openjdk build names javac as "javac.exe" which does not get resolved by this routine and throws a NPE.

return new File( toolChains.get( 0 ).findTool( "javac" ) )

I worked around it by making a symlink from "javac.exe" -> "javac". Everything worked as expected afterward and I got a working win64 binary linked together on a linux box (The future has arrived!).

Sorry for the lack of a patch, too little time for all that, so just this heads up. Thanks for this awesome project!

org.slf4j:slf4j-log4j12 fails to be turned into a module

I added this to my project:

<module>
    <artifact>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </artifact>
    <moduleInfoSource>
        module slf4j.log4j12 {
        exports org.slf4j;
        }
    </moduleInfoSource>
</module>

but when I try to run jlink on it, like this:

"C:\Program Files\Java\jdk-10\bin\jlink" --add-modules tech.dashman.dashman --module-path C:\Users\pupeno\Documents\Dashman\code\dashmancommon\target\classes;C:\Users\pupeno\Documents\Dashman\code\dashman\target\modules;"C:\Program Files\Java\jdk-10\jmods";C:\Users\pupeno\Documents\Dashman\code\dashman\t
arget\classes --output C:\Users\pupeno\Documents\Dashman\code\dashman\target\windows\jre --ignore-signing-information

I get this error:

Error: Error reading module: C:\Users\pupeno\Documents\Dashman\code\dashman\target\modules\slf4j-log4j12-1.7.25.jar

Any ideas what's going on? Is there a bug?

Provide "exclude & filter" option for moduleInfo declaration

If you have a module declaration like this:

org.springframework spring-core 5.0.6.RELEASE spring.core

it results in a call like this:

jdeps --generate-module-info . --add-modules io.netty.buffer,io.netty.common,reactor.core,org.reactivestreams,io.reactivex.rxjava2,rxjava,rxjava.reactive.streams,jopt.simple,aspectjweaver,kotlin.reflect,kotlin.stdlib,annotations,spring.jcl --module-path netty-buffer-4.1.19.Final.jar:netty-common-4.1.19.Final.jar:.m2/repository/io/projectreactor/reactor-core/3.1.7.RELEASE/reactor-core-3.1.7.RELEASE.jar:.m2/repository/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar:.m2/repository/io/reactivex/rxjava2/rxjava/2.1.13/rxjava-2.1.13.jar:.m2/repository/io/reactivex/rxjava/1.3.8/rxjava-1.3.8.jar:.m2/repository/io/reactivex/rxjava-reactive-streams/1.2.1/rxjava-reactive-streams-1.2.1.jar:.m2/repository/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:aspectjweaver-1.8.10.jar:.m2/repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.jar:.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.2.41/kotlin-stdlib-1.2.41.jar:.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:spring-jcl-5.0.6.RELEASE.jar .m2/repository/org/springframework/spring-core/5.0.6.RELEASE/spring-core-5.0.6.RELEASE.jar

most of those dependencies are optional and you get errors like this:
"Error: Modules rxjava and rxjava.reactive.streams export package rx to module kotlin.stdlib"

A workaround to create the module is, to declare the module info explicitly:

open module spring.core { requires java.desktop; requires spring.jcl; exports org.springframework.core.io.support; }

It should be possible to exclude modules from module-info generation, maybe something like that:

spring.core

Andy

Show jdeps error output also without debug mode

jdeps writes error messages to System.out which is only shown when enabling debug output. If the jdeps process returns with a status != 0, the standard output should be should be shown on the error log.

Allow dependences to be filtered out

Using the "!" prefix, it should be supported to filter out dependences, i.e. they will not show up in the emitted module descriptor. That can be useful when dealing with optional dependencies which are not modularized yet (and also hasn't even an automatic module name yet). In that case, a module descriptor for a project's JAR can already be released, supporting all other functionality and just skipping this optional feature.

Collect transitive dependencies of <additionalDependencies>

When adding a descriptor to a third-party artifact, not only the direct dependencies of that artifact but also transitive dependencies visible when originally compiling that artifact must be passed to the jdeps invocation. Currently, only direct dependencies are passed.

This will only be possible as far as the published pom.xml of such dependency reveals its compile-time dependencies.

MultiRelease Jars

How can I setup moditect-maven-plugin create-runtime-image to handle multiRelease jars.

I have heard that these dependencies should be Java11 aware.

    <repositories>
        <repository>
            <id>releases.java.net</id>
            <url>http://maven.java.net/content/repositories/releases/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>jvnet-nexus-staging</id>
            <url>http://maven.java.net/content/repositories/staging/</url>
            <layout>default</layout>
        </repository>
    </repositories>
    <dependencies>
           <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.4.0-b180608.0325</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-xjc</artifactId>
            <version>2.4.0-b180608.0325</version>
        </dependency>
       <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-jxc</artifactId>
            <version>2.4.0-b180608.0325</version>
        </dependency>     
    </dependencies>

I am trying a simple jaxb Project to test modularisation with java11.

I get this Error:
Error: jaxb-xjc-2.4.0-b180608.0325.jar is a multi-release jar file but --multi-release option is not set

I am using Apache Netbeans 9.0 rc1.
JDK 10.0.1

Compiler settings:

            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.7.0</version>
               <configuration>
                   <release>10</release>
               </configuration>
               <dependencies>
                   <dependency>
                       <groupId>org.ow2.asm</groupId>
                       <artifactId>asm</artifactId>
                       <version>6.2</version> <!-- Use newer version of ASM -->
                   </dependency>
               </dependencies>
           </plugin>

Moditect Settings:

            <plugin>
                <groupId>org.moditect</groupId>
                <artifactId>moditect-maven-plugin</artifactId>
                <version>1.0.0.Beta1</version>
                <executions>
                    <execution>
                        <id>add-module-infos</id>
                        <phase>package</phase>
                        <goals>
                            <goal>add-module-info</goal>
                        </goals>
                        <configuration>
                            <jvmVersion>10</jvmVersion>
                            <module>
                                <mainClass>com.myexample.jaxbtest.MainApp</mainClass>
                                <moduleInfo>
                                    <name>com.myexample.jaxbtest</name>
                                    <exports>
                                        *;
                                    </exports>
                                </moduleInfo>
                            </module>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.moditect</groupId>
                <artifactId>moditect-maven-plugin</artifactId>
                <version>1.0.0.Beta1</version>
                <executions>
                    <execution>
                        <id>create-runtime-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>create-runtime-image</goal>
                        </goals>
                        <configuration>
                            <modulePath>
                                <path>${project.build.directory}/modules</path>
                            </modulePath>
                            <modules>
                                <module>com.myexample.jaxbtest</module>
                            </modules>
                                <baseJdk>version=10,vendor=oracle,platform=windows</baseJdk>
                            <launcher>
                                <name>JaxbTest</name>
                                <module>com.myexample.jaxbtest</module>
                            </launcher>
                            <outputDirectory>
                                ${project.build.directory}/jlink-image
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Show affected class and method when used service cannot be determined

ServiceLoaderUseScanner only works when a class literal is passed to the ServiceLoader#load() method. Code which uses the service loader more dynamically and passes a variable for the service parameter, cannot be analyzed. We already raise a warning in that case, but that warning should make clear what the affected class and method is.

Spring boot

Could you make an example with spring boot?
Thanks

Generated module descriptors should refer to assigned module names

When calling the generate-module-info goal for two JARs foo.jar and bar.jar, and assigning module names different from the automatic module names, e.g. com.foo and com.bar, the generated descriptors will still contain requires clauses refering to the automatic module name. Instead, the assigned module name as given in the modularization build should be used.

Support native dependencies

Leveraging the os-maven-plugin, it should be possible to properly handle the Netty modules which have native dependencies, i.e. dependencies whose classifier is resolved based on properties set by this plug-in. If the plug-in is active, we should resolve forward the properties it sets to the resolution processes we do. See the Vert.x integration tests for an example (e.g. netty-transport-native-kqueue).

Build error with OpenJDK 9.0.4 (Fedora 27)

Hi,

I got some errors on the integration tests, see below.

I've created a branch, where I added the os-maven-plugin, since on the vertx/netty integration test some of the os.detected.*** properties were not set on my machine.

See commit:

Below is my list of errors

Undertow

java.base not found:

[INFO] --- moditect-maven-plugin:1.0.0-SNAPSHOT:create-runtime-image (create-runtime-image) @ moditect-integrationtest-undertow ---
[ERROR] Error: Module java.base not found, required by org.jboss.xnio.nio
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] ModiTect Parent .................................... SUCCESS [  0.404 s]
[INFO] ModiTect ........................................... SUCCESS [  4.359 s]
[INFO] ModiTect Maven Plug-In ............................. SUCCESS [  1.161 s]
[INFO] ModiTect Integration Test - Parent ................. SUCCESS [  0.028 s]
[INFO] ModiTect Integration Test - Undertow ............... FAILURE [  1.901 s]
[INFO] ModiTect Integration Test - Vert.x ................. SKIPPED
[INFO] ModiTect Integration Test - Hibernate Validator .... SKIPPED
[INFO] ModiTect Aggregator ................................ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.135 s
[INFO] Finished at: 2018-01-30T15:12:00+01:00
[INFO] Final Memory: 43M/144M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.moditect:moditect-maven-plugin:1.0.0-SNAPSHOT:create-runtime-image (create-runtime-image) on project moditect-integrationtest-undertow: Execution create-runtime-image of goal org.moditect:moditect-maven-plugin:1.0.0-SNAPSHOT:create-runtime-image failed: Execution of jlink failed -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :moditect-integrationtest-undertow
➜  moditect git:(os_plugin) ✗ mvn -v 
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T09:58:13+02:00)
Maven home: /home/matzew/tools/maven/current
Java version: 9.0.4, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-9-openjdk-9.0.4.11-3.fc27.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.13.9-300.fc27.x86_64", arch: "amd64", family: "unix"

vertx

Invalid module name: 'native' is not a Java identifier:

[INFO] Created module descriptor at /home/matzew/Work/matzew/moditect/integrationtest/vert.x/target/moditect/generated-sources/io.netty.channel.unix/module-info.java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.320 s
[INFO] Finished at: 2018-01-30T15:14:50+01:00
[INFO] Final Memory: 29M/98M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.moditect:moditect-maven-plugin:1.0.0-SNAPSHOT:add-module-info (add-module-info-to-dependencies) on project moditect-integrationtest-vertx: Execution add-module-info-to-dependencies of goal org.moditect:moditect-maven-plugin:1.0.0-SNAPSHOT:add-module-info failed: Unable to derive module descriptor for /home/matzew/.m2/repository/io/netty/netty-transport-native-unix-common/4.1.15.Final/netty-transport-native-unix-common-4.1.15.Final-linux-x86_64.jar: netty.transport.native.unix.common: Invalid module name: 'native' is not a Java identifier -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 

Validator

Missing dependencies:

Error: missing dependencies
   org.hibernate.validator.internal.engine.valueextraction.ListPropertyValueExtractor -> javafx.beans.property.ListProperty                 not found
   org.hibernate.validator.internal.engine.valueextraction.MapPropertyKeyExtractor -> javafx.beans.property.MapProperty                  not found
   org.hibernate.validator.internal.engine.valueextraction.MapPropertyValueExtractor -> javafx.beans.property.MapProperty                  not found
   org.hibernate.validator.internal.engine.valueextraction.ObservableValueValueExtractor -> javafx.beans.value.ObservableValue                 not found
   org.hibernate.validator.internal.engine.valueextraction.ReadOnlyListPropertyValueExtractor -> javafx.beans.property.ReadOnlyListProperty         not found
   org.hibernate.validator.internal.engine.valueextraction.ReadOnlyMapPropertyKeyExtractor -> javafx.beans.property.ReadOnlyMapProperty          not found
   org.hibernate.validator.internal.engine.valueextraction.ReadOnlyMapPropertyValueExtractor -> javafx.beans.property.ReadOnlyMapProperty          not found
   org.hibernate.validator.internal.engine.valueextraction.ReadOnlySetPropertyValueExtractor -> javafx.beans.property.ReadOnlySetProperty          not found
   org.hibernate.validator.internal.engine.valueextraction.SetPropertyValueExtractor -> javafx.beans.property.SetProperty                  not found
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 53.322 s
[INFO] Finished at: 2018-01-30T15:13:58+01:00
[INFO] Final Memory: 32M/106M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.moditect:moditect-maven-plugin:1.0.0-SNAPSHOT:add-module-info (add-module-infos) on project moditect-integrationtest-hibernate-validator: Execution add-module-infos of goal org.moditect:moditect-maven-plugin:1.0.0-SNAPSHOT:add-module-info failed: Couldn't parse /home/matzew/Work/matzew/moditect/integrationtest/hibernate-validator/target/moditect/org.hibernate.validator/module-info.java -> [Help 1]

Support creating of "hollow" runtime images

Similar to "hollow uber JARs" in WildFly Swarm it should be possible to create hollow runtime images.

Such image would only contain an application's dependencies, whereas the appliciation module(s) themselves would be added only at execution time via --module-path. That'd be desirable for usage with Docker, where one could have one image with the (relatively stable) application dependencies and another one with the (more frequently changing) application modules which can be much smaller that way.

Moditect Vert.x Web Example

Hi,

I'm currently trying to setup a Vert.x Web example which uses the maven plugin and add-module-info to generate the module descriptors so that I can build a runtime image.

For Vert.x core this works without any issue but once I add Vert.x Web I ran into a strange issue.

Somehow moditect is picking up a dependency which is not actually part of the dependency tree.

This might happen because Vert.x web has a pom dependency/managed dependency but I'm not sure. I tried to explicitly adding the groovy dependency to my project and also provide a module configuration for it but that did not work.

[ERROR] Failed to execute goal org.moditect:moditect-maven-plugin:1.0.0.Beta1:add-module-info (add-module-info-to-dependencies) on project vertx-graalvm-native-image-test-app: 
Execution add-module-info-to-dependencies of goal org.moditect:moditect-maven-plugin:1.0.0.Beta1:add-module-info failed: 
Unable to derive module descriptor for /home/jotschi/.m2/repository/org/codehaus/groovy/groovy-all/2.4.7/groovy-all-2.4.7.jar: 
Provider class moduleName=groovy-all not in module -> [Help 1]

Any hint would be appreciated. We are also discussing the issue within this Vert.x Thread:
https://groups.google.com/forum/#!topic/vertx/uIUAMaZLaec

A reproducer can be found in my vertx-graalvm-native-image-test repo within the dev-moditect branch.

https://github.com/Jotschi/vertx-graalvm-native-image-test/tree/dev-moditect

ModiTect not finding module dependencies

I've configured ModiTect to generate module-info.javas for all my dependencies (that don't have them) and that seems to be working; but when it comes to dependencies that do have them, it's not finding them.

When I run mvn package in my app it's failing with:

[INFO] --- moditect-maven-plugin:1.0.0.Beta1:create-runtime-image (create-runtime-image) @ dashman ---
[ERROR] Error: Module tech.dashman.dashmancommon not found, required by tech.dashman.dashman`

Now, I know tech.dashman.dashmancommon is a module and has a module-info.java because I built it myself. How do I make ModiTect/Jlink find all the dependent modules in their original jars?

My under-construction ModiTect config looks like this:

    <plugin>
        <groupId>org.moditect</groupId>
        <artifactId>moditect-maven-plugin</artifactId>
        <version>1.0.0.Beta1</version>
        <executions>
            <execution>
                <id>add-module-info-to-dependencies</id>
                <phase>package</phase>
                <goals>
                    <goal>add-module-info</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}/modules</outputDirectory>
                    <overwriteExistingFiles>true</overwriteExistingFiles>
                    <modules>
                        <module>
                            <artifact>
                                <groupId>org.bouncycastle</groupId>
                                <artifactId>bcprov-jdk15on</artifactId>
                                <version>1.59</version>
                            </artifact>
                            <moduleInfoSource>
                                module bcprov.jdk15on {
                                exports org.bouncycastle.jce.provider;
                                exports org.bouncycastle.jce.spec;
                                exports org.bouncycastle.util.encoders;
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>org.springframework</groupId>
                                <artifactId>spring-core</artifactId>
                                <version>5.0.5.RELEASE</version>
                            </artifact>
                            <moduleInfoSource>
                                module spring.core {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>org.springframework</groupId>
                                <artifactId>spring-context</artifactId>
                                <version>5.0.5.RELEASE</version>
                            </artifact>
                            <moduleInfoSource>
                                module spring.context {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>org.springframework.retry</groupId>
                                <artifactId>spring-retry</artifactId>
                                <version>1.2.2.RELEASE</version>
                            </artifact>
                            <moduleInfoSource>
                                module spring.retry {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>org.springframework</groupId>
                                <artifactId>spring-web</artifactId>
                                <version>5.0.5.RELEASE</version>
                            </artifact>
                            <moduleInfoSource>
                                module spring.web {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>com.pubnub</groupId>
                                <artifactId>pubnub-gson</artifactId>
                                <version>4.19.0</version>
                            </artifact>
                            <moduleInfoSource>
                                module pubnub.gson {
                                }
                            </moduleInfoSource>
                        </module>

                        <module>
                            <artifact>
                                <groupId>com.fasterxml.jackson.core</groupId>
                                <artifactId>jackson-databind</artifactId>
                                <version>2.9.5</version>
                            </artifact>
                            <moduleInfoSource>
                                module com.fasterxml.jackson.core {
                                }
                            </moduleInfoSource>
                        </module>

                        <module>
                            <artifact>
                                <groupId>org.kordamp.ikonli</groupId>
                                <artifactId>ikonli-javafx</artifactId>
                                <version>2.1.1</version>
                            </artifact>
                            <moduleInfoSource>
                                module org.kordamp.ikonli.javafx {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>io.sentry</groupId>
                                <artifactId>sentry</artifactId>
                                <version>1.7.2</version>
                            </artifact>
                            <moduleInfoSource>
                                module io.sentry {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>org.javassist</groupId>
                                <artifactId>javassist</artifactId>
                                <version>3.22.0-CR2</version>
                            </artifact>
                            <moduleInfoSource>
                                module javassist {
                                }
                            </moduleInfoSource>
                        </module>
                        <module>
                            <artifact>
                                <groupId>javax.validation</groupId>
                                <artifactId>validation-api</artifactId>
                                <version>2.0.1.Final</version>
                            </artifact>
                            <moduleInfoSource>
                                module java.validation {
                                }
                            </moduleInfoSource>
                        </module>
                    </modules>
                </configuration>
            </execution>
            <execution>
                <id>create-runtime-image</id>
                <phase>package</phase>
                <goals>
                    <goal>create-runtime-image</goal>
                </goals>
                <configuration>
                    <modulePath>
                        <path>${project.build.directory}/modules</path>
                        <path>${project.build.directory}/classes</path>
                    </modulePath>
                    <modules>
                        <module>tech.dashman.dashman</module>
                    </modules>
                    <outputDirectory>${project.build.directory}/jlink-image</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>

BTW, I posted this as a question in Stack Overflow: https://stackoverflow.com/questions/49716711/moditect-and-jlink-not-finding-module-dependencies

Maven plugin throws NullPointerException if dependencyManagement is not defined

In the 'add-module-info' goal, if the pom or any of its parents does not define a <dependencyManagement> section, then the plugin throws a NullPointerException if it needs to search for the artifact dependencies of one of the defined modules. The attached pom file can be used to trigger the exception when executed with 'mvn package'.

In your code, there are two places where you are retrieving the dependency management from the project object: ModuleInfoGenerator and AddModuleInfoMojo. I'm not familiar with maven plugin development and its current best practices, and I couldn't find anything online on what's the appropriate way to get all of a project's direct dependencies. Should one get all the dependencies from MavenProject::getDependencies and then somehow combine those with any present via MavenProject::getDependencyManagement in case it exists? Maybe there's no general guidance and it depends on what a plugin wants to do. What do you think could be done in your case?

Use Beta release of ASM 6

There's a release of ASM 6 Beta now, although not yet in Maven Central. We can shade it for the time being.

Running moditect on JDK 7 / JDK 8

I have been trying to get moditect to work on JDK 7 / JDK 8, to create jars that work on those releases, but also work as modules on Java 9+. I have discovered that this works fine, as long as I build on JDK9+, in Java 7 compatibility mode.

If I build in JDK 7 or 8, the error I get is:

[ERROR] Failed to execute goal org.moditect:moditect-maven-plugin:1.0.0.Beta1:add-module-info (add-module-infos) on project fast-classpath-scanner: Execution add-module-infos of goal org.moditect:moditect-maven-plugin:1.0.0.Beta1:add-module-info failed: A required class was missing while executing org.moditect:moditect-maven-plugin:1.0.0.Beta1:add-module-info: java/lang/module/FindException

I don't know of a way to get just one Maven plugin to run with a different JDK version (e.g. build on JDK 7 or 8 to ensure compatibility, but run moditect in JDK10 or later), but if it's not much work to support running moditect on older JDKs, it may be useful to be able to do so. (Moditect uses bytecode compilation internally, and the source doesn't yet use "var" style assignments or anything, so maybe both forwards and backwards compatibility is easy to support?)

Support adding --ignore-signing-information

When jliking, it'd be nice to have a way to add --ignore-signing-information to the command to avoid:

[INFO] --- moditect-maven-plugin:1.0.0.Beta1:create-runtime-image (create-runtime-image) @ dashman ---
[ERROR] Error: signed modular JAR C:\Users\pupeno\Documents\Dashman\code\dashman\target\modules\bcprov-jdk15on-1.59.jar is currently not supported, use --ignore-signing-information to suppress error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.