【问题标题】:Compile JAR file with all of its JAR dependencies编译 JAR 文件及其所有 JAR 依赖项
【发布时间】:2018-07-06 14:20:05
【问题描述】:

我有一个从here 下载的 JAR 文件。事实证明,运行这个 JAR 需要几个其他的 JAR 文件,例如 bson4jackson-2.7.0.jar jackson-annotations-2.9.0.jar。

是否可以将我与其他 JAR 文件一起下载的 JAR 编译成单个胖 JAR 或具有依赖项的 JAR?是否有 Maven 命令可以做到这一点?

【问题讨论】:

    标签: java maven dependencies


    【解决方案1】:

    您需要使用maven shade 插件,它会创建一个胖罐子,这里是一个示例

               <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.1.0</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <finalName>jar2</finalName>
                                <transformers>
                                    <!-- add Main-Class to manifest file -->
                                    <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>com.greg.App</mainClass>
                                    </transformer>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    

    【讨论】:

    • 我只有 JAR 文件和那些依赖项。在这种情况下,我应该创建一个新的 Maven 项目?
    • @IhsanHaikal 是的,创建一个新的 maven 项目,将所有这些 jar 作为依赖项添加,maven 将创建一个 fat jar,即所有类都被分解的 jar,以便类加载器可以找到它们。
    • 好的,我试试。但是你在答案中写的 mainClass 属性呢?那我该怎么写呢?
    • 你想创建一个可运行的 jar 吗?
    • 是的,但我现在遇到了错误。查看我对 pom.xml 和错误的更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2019-05-02
    • 2015-04-30
    • 2013-10-12
    • 2012-01-11
    相关资源
    最近更新 更多