1

我的 Java 应用程序的包结构类似于:

src/com/name/app 
src/com/name/app/do 
src/com/name/utils/db

我将如何将这些目录中的 Java 文件编译到可运行的 jar 中?我需要将所需的库打包到生成的 JAR (jdbc) 中。

我一直在 Eclipse 中完成这些事情,但现在我需要为几个人提供一种在不使用 eclipse 的情况下编译存储库的方法,并且我正在考虑制作一个调用必要的 javac 模式的 makefile 或脚本。

4

4 回答 4

5

看看蚂蚁。这是一个相对简单易懂的构建工具,并提供满足您要求的一切。这是一个快速的框架 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”。

无论如何,这应该让你开始。当你遇到他们时,你可以问更具体的问题。

于 2010-03-27T01:39:47.630 回答
4

首先,考虑使用 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.

于 2010-03-27T01:46:19.183 回答
0

考虑使用 Ant 来执行此操作。 http://ant.apache.org/

于 2010-03-27T01:41:08.447 回答
0

我建议您使用Apache Ant来实现您的构建脚本。

如果正确实施,Ant 很容易使用,并且构建脚本可以在任何可以安装 JDK 的平台上运行。确实,通过一点工作,您甚至可以设置您的项目,以便用户甚至不需要下载/安装 Ant。(提示:将 Ant JAR 文件和包装脚本添加到您的项目发行版中)

于 2010-03-27T01:42:24.153 回答