我正在构建一个基于 Java 的 HTTP 服务器,带有类似 bukkit 的 (minecraft) 插件系统。我想以一种互不干扰的方式加载插件库,例如如果两个插件在其 jar 中打包相同的库,则可能会出现问题。
我知道这可以通过“maven shading”来完成。然而,我对maven唯一了解的是如何向项目添加依赖项。 Maven 教程并没有让我变得更明智。
我已经阅读了有关构建目标之类的内容,但没有任何 pom.xml 示例解释其工作原理或您有哪些选项。当我搜索“Java插件maven shading”或类似的结果时,我得到的唯一结果是关于maven shading插件(我不明白第一件事)
我不想太深入 maven 命令行,我正在使用 eclipse maven 插件。
也欢迎其他解决方案。
最佳答案
另一个论坛上的有人告诉我在 fat jar
的上下文中搜索,这帮助我找到了答案。我发现this网站上有一个很好的示例,说明如何打包 jar 文件:
<!-- Maven Shade Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.mkyong.core.utils.App</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
关于Java插件库着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26956393/