java—使用moditect向依赖项添加模块信息,而不下载依赖项

2uluyalo  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(537)

我尝试使用moditect,以便在使用自动命名模块(arcgis)时创建运行时映像。arcgis模块需要OpenJFX11(我也添加了它作为依赖项,因为它是一个javafx项目)。然而,当我试图构建运行时映像时,我得到了以下错误

java.lang.IllegalArgumentException: duplicate element: javafx.base

我认为这是因为maven还在项目中添加了arcgis openjfx依赖项(这包括每个平台(win、mac、linux)的openjfx),这导致它有重复的javafx。
在不添加openjfx依赖项的情况下,我应该如何添加模块信息?
这里是 pom.xml 如果有帮助的话,使用moditect插件

<plugin>
                <groupId>org.moditect</groupId>
                <artifactId>moditect-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>add-module-info-to-dependencies</id>
                        <phase>package</phase>
                        <configuration>
                            <overwriteExistingFiles>true</overwriteExistingFiles>
                            <outputDirectory>${project.build.directory}/modules</outputDirectory>
                            <modules>
                                ...
                                <module>
                                    <artifact>
                                        <groupId>com.esri.arcgisruntime</groupId>
                                        <artifactId>arcgis-java</artifactId>
                                        <version>${arcgis.version}</version>
                                    </artifact>
                                    <moduleInfo>
                                        <name>com.esri.arcgisruntime</name>
                                    </moduleInfo>
                                </module>
                            </modules>
                        </configuration>
                        <goals>
                            <goal>add-module-info</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
jobtbby3

jobtbby31#

除了 <artifact> ,而不是 <moduleInfo> 标记,则需要重写 moduleinfo.java 使用 moduleInfoSource :

<module>
    <artifact>...</artifact>    
    <moduleInfoSource>
        module com.esri.arcgisruntime {
            requires ...;
            exports ...;
            provides ...
                with ...;
        }
    </moduleInfoSource>
</module>

您必须检查 com.esri.arcgisruntime 但moditect确实提供了 generate-module-info 为你自动生成的目标。
然后你会更新 requires javafx.baserequires transitive javafx.base (以及可能的其他 javafx 条目)来指示模块依赖于它,但应该从其他地方加载它。

相关问题