如何将所有jar文件放在一个jar文件中?

时间:2012-04-05 20:22:47

标签: java build jar

是否可以构建一个由我需要的所有jar文件组成的jar文件?我正在构建我的项目并且jar文件没有包含在生成的jar文件中,我想生成一个单独的jar文件,其中包含此项目中的所有jar文件

6 个答案:

答案 0 :(得分:3)

Eclipse插件可以执行FatJarJarsSplice

答案 1 :(得分:0)

不可能。您不能在jar中包含jar以便将它们放在类路径中(您可以将它们放在jar中,但不能将它们用作依赖项)

但是,

Maven会为您提供maven-assembly-plugin的替代方案。它解压缩所有jar并将它们的.class文件存储在新的单个jar中。当然,还有其他选择可以做同样的事情,但maven是一个很棒的构建工具,无论如何都可以使用。

答案 2 :(得分:0)

yguard tool可以做到这一点。如果您愿意,它还可以缩小您的代码并对其进行模糊处理。

以下是他们文档中的蚂蚁示例:

  <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="buildlib/yguard.jar"/>

  <inoutpairs resources="auto">
    <fileset dir="${input-lib-dir}">
      <include name="myapp*.jar"/>
      <exclude name="*_obf.jar"/>
    </fileset>
    <mapper type="glob" from="*.jar" to="*_obf.jar"/>
  </inoutpairs>

答案 3 :(得分:0)

答案 4 :(得分:0)

您可以使用一个jar maven插件。

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!--                   REPOSITORIES                          -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

    <pluginRepositories>
        <pluginRepository>
            <id>onejar-maven-plugin.googlecode.com</id>
            <url>http://onejar-maven-plugin.googlecode.com/svn/mavenrepo</url>
        </pluginRepository>
    </pluginRepositories>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
            <!--                      ONE JAR PLUGIN                     -->
            <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>org.acme.MainClass</mainClass>
                            </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.dstovall</groupId>
                <artifactId>onejar-maven-plugin</artifactId>
                <version>1.4.4</version>
                <executions>
                    <execution>
                        <configuration>
                            <!-- Optional -->
                            <onejarVersion>0.97</onejarVersion>
                            <!--
                                Optional, use only if you need to include native libraries
                                (dll's) <binlibs> <fileSet>
                                <directory>${project.build.directory}/dllextract</directory>
                                <includes> <include>test.dll</include> </includes> </fileSet>
                                </binlibs>
                            -->
                            <!-- Optional, default is false -->
                            <attachToBuild>true</attachToBuild>
                            <!-- Optional, default is "onejar" -->
                            <classifier>onejar</classifier>
                        </configuration>
                        <goals>
                            <goal>one-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

答案 5 :(得分:-1)

一个jar文件不能包含另一个jar文件,但你可以做的是用多个jar文件创建一个包含你想要的所有类的大jar文件。