我的 Java 应用程序的包结构类似于:
src/com/name/app
src/com/name/app/do
src/com/name/utils/db
我将如何将这些目录中的 Java 文件编译到可运行的 jar 中?我需要将所需的库打包到生成的 JAR (jdbc) 中。
我一直在 Eclipse 中完成这些事情,但现在我需要为几个人提供一种在不使用 eclipse 的情况下编译存储库的方法,并且我正在考虑制作一个调用必要的 javac 模式的 makefile 或脚本。
我的 Java 应用程序的包结构类似于:
src/com/name/app
src/com/name/app/do
src/com/name/utils/db
我将如何将这些目录中的 Java 文件编译到可运行的 jar 中?我需要将所需的库打包到生成的 JAR (jdbc) 中。
我一直在 Eclipse 中完成这些事情,但现在我需要为几个人提供一种在不使用 eclipse 的情况下编译存储库的方法,并且我正在考虑制作一个调用必要的 javac 模式的 makefile 或脚本。
看看蚂蚁。这是一个相对简单易懂的构建工具,并提供满足您要求的一切。这是一个快速的框架 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”方法。这是开始学习清单的好地方。
作为产生非常混乱的 Ant 构建文件的替代方案,您可以右键单击 Eclipse 项目并选择“Export...”,然后选择“General > Ant Buildfiles”。
无论如何,这应该让你开始。当你遇到他们时,你可以问更具体的问题。
首先,考虑使用 Ant 来完成这样的任务。
但是由于您要求手动处理,因此您需要首先创建一个清单文件,如下所示:
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的内容,用你的主类的完全限定名替换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.
考虑使用 Ant 来执行此操作。 http://ant.apache.org/
我建议您使用Apache Ant来实现您的构建脚本。
如果正确实施,Ant 很容易使用,并且构建脚本可以在任何可以安装 JDK 的平台上运行。确实,通过一点工作,您甚至可以设置您的项目,以便用户甚至不需要下载/安装 Ant。(提示:将 Ant JAR 文件和包装脚本添加到您的项目发行版中)