是否可以构建一个由我需要的所有 jar 文件组成的 jar 文件?我正在构建我的项目,jar 文件没有包含在生成的 jar 文件中,我想生成一个单独的 jar 文件,其中包含该项目中的所有 jar 文件
问问题
2767 次
5 回答
3
有 Eclipse 插件可以做到这一点FatJar , JarsSplice
于 2012-04-05T20:25:21.997 回答
0
不可能。您不能在 jar 中包含 jar 以便将它们放在类路径中(您可以将它们放在 jar 中,但不能将它们用作依赖项)
然而,Maven为您提供了maven-assembly-plugin的替代方案。它解压缩所有 jar 并将它们的 .class 文件存储在新的单个 jar 中。当然,还有其他选项可以做同样的事情,但是 maven 无论如何都是一个很棒的构建工具。
于 2012-04-05T20:25:41.580 回答
0
yguard工具可以做到这一点。如果您愿意,它还可以缩小您的代码并对其进行混淆。
这是他们文档中的一个蚂蚁示例:
<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>
于 2012-04-05T20:36:09.750 回答
0
看看onejar: http ://one-jar.sourceforge.net/
于 2012-04-05T20:38:17.753 回答
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>
于 2012-04-05T21:52:22.093 回答