如何使用maven和fatjar插件将一个SINGLE依赖项包含到jar中

drg*_*rgn 8 uberjar maven

我觉得这个问题有点愚蠢,但我无法弄清楚如何将SINGLE依赖(jdom.jar)添加到另一个jar中.

上下文:我们为我们的应用程序开发了一个简单的插件,这个插件有许多依赖性.我们使用fatjar将jdom.jar包含在其中.我正在尝试修复此插件中的错误,所以我决定同时"maven-ize".(我们刚刚切换到maven)这个插件加载到运行时,因此我们想要打包的唯一依赖项是jdom.jar.

问题:我发现有一个maven fatjar插件!不幸的是我找不到任何文档,这个maven插件将每个依赖项添加到输出jar中.经过多次尝试,我决定放弃这个fatjar插件并搜索另一个插件.我找到了一个罐子,阴影,但在快速阅读它们后,他们看起来像是添加了每一个依赖.

问题:将jdom.jar添加到我的插件jar中的简单方法是这样的:

-MyPlug-in.jar
|
|-src
 |-main
  |-java
   |-*.java
|-jdom.jar

另外我不想改变清单或输出jar文件名

非常感谢你的时间.

小智 15

关于如何使用maven包含一个jar文件,这里没有答案maven-shader-plugin.我花了一些时间来弄清楚如何真正做到这一点.这是一个片段,只包含依赖项中的类com.googlecode.json-simple:json-simple.

<project>
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                   <include>com.googlecode.json-simple:json-simple</include>
                                </includes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </build>
    ...
</project>
Run Code Online (Sandbox Code Playgroud)