如何使用Ant脚本创建jar文件以启动该程序

时间:2013-05-06 14:51:02

标签: java apache ant jar main

我目前有一个带有两个主要方法的eclipse项目,并且想知道是否可以在执行jar文件时创建一个运行Apache Ant脚本的jar文件。我在下面提供了一个Ant脚本,其中运行了两个主要方法。提前谢谢。

    <?xml version="1.0"?>
      <project name="Test" default="run_external">
        <target name="compile">
            <delete dir="bin" />
            <mkdir dir="bin" />
            <javac srcdir="src" destdir="bin" />
        </target>
        <target name="run_external" depends="compile">
            <parallel>
                <exec executable="cmd" dir="bin">
                    <arg value="/c start cmd.exe /k java test.Main" />
                </exec>
                <exec executable="cmd" dir="bin">
                    <arg value="/c start cmd.exe /k java test.Main2" />
                </exec>
            </parallel>
        </target>
    </project>

2 个答案:

答案 0 :(得分:0)

你为什么需要Ant?从评论中我推断出您希望Java程序启动另一个程序。如果是这样,只需使用:

Runtime.getRuntime().exec("java -jar otherprogram.jar");

或任何命令行。请注意,Runtime.getRuntime().exec()有更多高级版本,因此请查看javadoc。

编辑:来自Runtime.getRuntime().exec() docs:

  

在单独的进程中执行指定的字符串命令。

所以你正在产生另一个独立的JVM。

不要直接使用java ...,而是使用环境变量编写命令:这仅用于演示函数。

无论如何,如果您需要在启动时执行此操作,我建议您使用shell脚本启动这三个程序。

答案 1 :(得分:0)

使用ant

创建一个jar
 <target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/helloworld.jar" basedir="${classes.dir}"/>
 </target>

当您在一个jar文件中包含多个主类时,必须使用-cp标志和指定的主类的完全限定名称来调用每个主类。

java -cp helloworld.jar com.test.Main1 && java -cp helloworld.jar com.test.Main2

这会给你一个输出(我只是打印了类名)

I am main 1
I am main 2

<强>替代地 根据您的要求,您可以创建单个入口点(我更喜欢这个),我的意思是使用main方法的单个类,然后从该类调用其他主要方法

例如

创建一个类

public class Main {

public static void main(String[] args) {

    Main1.main(args);
    Main2.main(args);
   }
 }

在Manifest.MF

中包含此主要类
<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
     <jar destfile="${jar.dir}/helloworld.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="com.test.Main"/>
        </manifest>
    </jar>
</target>

执行

   java -jar helloworld.jar

的输出
 I am main 1
 I am main 2
相关问题