我尝试使用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>
1条答案
按热度按时间jobtbby31#
除了
<artifact>
,而不是<moduleInfo>
标记,则需要重写moduleinfo.java
使用moduleInfoSource
:您必须检查
com.esri.arcgisruntime
但moditect确实提供了generate-module-info
为你自动生成的目标。然后你会更新
requires javafx.base
至requires transitive javafx.base
(以及可能的其他javafx
条目)来指示模块依赖于它,但应该从其他地方加载它。