我正在寻找满足以下要求的JAR文件生成器:


能够创建包含其他jar文件的jar文件
使清单文件的创建和维护变得容易。


评论

我们在谈论什么样的复杂性? Apache Maven在构建过程中自动构建了我所有的.jar文件(及其清单)。

PKZIP? (或Info-ZIP…)

@Darth Android实际上,我经常需要在项目中使用ant

@demongolem:您到底想创建哪种jar?列出所有“困难”。

@Nicolas Raoul首先,将罐子包装到罐子中时发生类路径问题。该用例本身在大多数情况下都会受到干扰。

#1 楼

对于创建胖罐来说,jarjar是一个出色的工具,因为它易于使用,维护良好并且具有良好的插件支持。许多通常需要重新打包的库(例如ASM)也建议使用此方法。否则,Maven或Gradle之类的构建管理器应立即为您提供所需的功能。您应该能够依赖于构建配置文件来打包资源。

#2 楼

如果您希望将应用程序及其库JAR打包为一个JAR文件,则可以考虑使用BSD许可的One-Jar。 One-Jar使用自定义的类加载器从主JAR文件中的JAR加载,而jarjar(基于其文档)将所有类压缩为一个JAR文件(无内部JAR),并根据需要修改类文件。

根据您的应用程序,One-Jar的方法可能比jarjar的方法更好(或更糟)。

#3 楼

我认为Maven是可以完成所有工作(使用某些配置)的工具。

示例:我有一个文件夹(./lib),其中存放了我所有的JAR文件,我只有以下小pom像这样的.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.mycompany.test</groupId>
    <artifactId>bigjar</artifactId>
    <packaging>jar</packaging>

    <version>1.0-SNAPSHOT</version>

    <url>http://www.mycompany.com</url>

    <prerequisites>
        <maven>3.1.0</maven>
    </prerequisites>

    <!-- Put external dependencies here -->
    <dependencies>

    </dependencies>

    <build>
        <defaultGoal>install</defaultGoal>
        <resources>
            <resource>
                <directory>lib</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>  


只需运行mvn clean install,然后将所有lib / *。jar文件保存在新的JAR中。

如果需要外部Jars,则可以将其添加为新的依赖项(在本节中)。

要管理Manifest.MF,只需看一下这篇文章,他们会解释如何使用maven-jar-plugin。官方文档在这里。