我的Java应用程序有一个与此类似的包结构:
src/com/name/app
src/com/name/app/do
src/com/name/utils/db
我如何将这些目录中的Java文件编译到可运行的jar中?我需要将所需的库打包到生成的JAR(jdbc)中。
我总是在Eclipse中完成这些工作,但现在我需要为几个人提供一种编译存储库而不使用eclipse的方法,我正在考虑制作一个makefile或一个调用必要的javac的脚本图案。
答案 0 :(得分:5)
看看Ant。这是一个相对简单的构建工具,可以理解并提供满足您要求的所有内容。这是一个快速的框架build.xml,可以帮助您入门:
<project name="my_app_name" default="jar">
<target name="compile">
<javac srcdir="src" destdir="bin">
<classpath>
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</classpath>
</javac>
</target>
<target name="jar">
<jar manifest="manifest_file" destfile="dist/my_app_name.jar">
<fileset dir="bin" />
<fileset dir="lib" />
</jar>
</target>
您需要创建一个清单文件,该文件将告诉java进程哪个类包含“main”方法。 Here是开始了解清单的好地方。
作为产生非常混乱的Ant构建文件的替代方法,您可以右键单击Eclipse项目并选择“Export ...”,然后选择“General&gt; Ant Buildfiles”。
无论如何,这应该让你开始。在遇到这些问题时,您可以提出更具体的问题。
答案 1 :(得分:4)
首先,考虑将Ant用于此类任务。
但是既然你要求手动过程,你需要先创建一个manifest file,如下所示:
Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Class-Path: lib/jdbc.jar lib/otherlib.jar
Main-Class: com.name.app.MainClass
将 Class-Path 的内容替换为您的libs,将 Main-Class 替换为您的主类的完全限定名称。
然后,您需要使用以下命令生成实际的.jar:
jar cfm app.jar MANIFEST.MF src/com/name/app/*.class src/com/name/app/do/*.class
其中 MANIFEST.MF 是前面提到的清单文件,其余是.java类所在的文件夹。
最后,要运行您的应用,只需执行:java -jar app.jar
。
答案 2 :(得分:0)
考虑使用Ant来执行此操作。 http://ant.apache.org/
答案 3 :(得分:0)
我建议您使用Apache Ant来实现构建脚本。
如果正确实现,Ant易于使用,构建脚本可以在任何可以安装JDK的平台上运行。实际上,通过一些工作,您甚至可以设置项目,以便用户甚至不需要下载/安装Ant。 (提示:将Ant JAR文件和包装脚本添加到项目发行版中)