如何打包包含jar文件中的类的jar文件

3

我的项目有一些依赖项,它们是jar文件。我的项目将被打包成一个jar文件。

是否可以将所有文件打包,包括从我的项目源代码编译的类和依赖的jar文件中的所有类。 我正在使用JDK 1.6+。

如果可能的话,如何使用命令、ant或Eclipse进行操作?

3个回答

2
将依赖的jar类文件复制到项目jar文件中:
使用Maven插件maven-shade-plugin,使用命令:mvn package <dependencies>下的所有类文件都将包含在您的项目jar文件中。
<dependencies>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.5</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <finalName>Test.jar</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>

1
您所提出的请求是可行的,但不是一个好的做法。Jar文件是组件,应该保留在自己的Jar文件中。如果将所有类文件包含在一个jar中,则无法重用它们,且您的jar文件将过大。
我建议您使用Maven(http://maven.apache.org),它可以为您管理依赖关系。

是的,我现在需要一个fat jar。 - Nick Dong
在这种情况下,您可以使用能够执行此操作的Maven插件。 - sendon1982

0

在Eclipse中使用导出选项。 选择导出->Runnable Jar并选中"将所需的库文件打包到生成的jar中"选项。

这应该满足你的需求。

希望对你有所帮助, Keshava。


请参考此处的另一篇帖子:https://dev59.com/UGoy5IYBdhLWcg3wA5eC同时,也可以查看 ANT 的示例:http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html。 - Keshava
这可以使用jar xvf来解压其他包,然后使用mv将它们的类移动到目标文件夹,最后使用jar cvf创建目标jar。这是优雅的方式吗?还有其他替代方法吗?@Keshava - Nick Dong
对于Eclipse,是否可以在自动构建项目时执行与手动导出相同的操作? - Nick Dong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接