0

已解决(见下文)

我在 Github 上有一个 Java 项目,我已经将它导入 Eclipse Juno 没有问题。在 Eclipse 中生成自动 ant 文件也不是问题。但是,当我将 build.xml 推送到 Github 存储库并将更新的存储库克隆到另一台机器并尝试运行 ant 时,不会创建 jar。

似乎没有办法在 Eclipse 中生成独立于 Eclipseant文件。这种印象对吗?我需要手动编辑 ant 文件吗?

这是一个超级简单的项目,一个文件定义了对象类型,另一个是单元测试。

src/main/Main.java
src/test/MainTest.java

自动生成的 build.xml 如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="example">
    <property environment="env"/>
    <property name="junit.output.dir" value="junit"/>
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.6"/>
    <property name="source" value="1.6"/>
    <path id="example.classpath">
        <pathelement location="bin"/>
        <pathelement location="../../../../usr/share/java/junit-4.8.2/junit-4.8.2.jar"/>
    </path>
    <target name="init">
        <mkdir dir="bin"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
  ...... [edited]
 <target name ="makejar" description="Create a jar for the project">
    <jar jarfile="example.jar" includes="*.class" basedir="bin"/>
  </target>
</project>

通过手工制作一个非常简单的ant文件解决了问题:

<?xml version="1.0"?>
<project name="example" default="main" basedir=".">

<property name="src.dir" location="src" />
<property name="build.dir" location="build" />

<target name="clean">
<delete dir="${build.dir}" />
</target>

<target name="makedir">
<mkdir dir="${build.dir}" />
</target>

<target name="compile" depends="clean, makedir">
<javac srcdir="${src.dir}" destdir="${build.dir}">
</javac>

</target>

<target name="jar" depends="compile">
<jar destfile="example.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="main.Main" />
</manifest>
</jar>
</target>

<target name="main" depends="compile, jar">
<description>Main target</description>
</target>

</project> 
4

1 回答 1

0

好的 - 如果您只是运行,则查看您的构建文件,ant您将获得默认目标build

然后这将调用(基于依赖):

build-subprojects- 什么也没做

build-project- 调用init将除java文件之外的所有内容复制srcbin目录中,然后回显一条消息,然后调用javac

没有目标makejar被调用的地方。您是否尝试过发布:

ant

接着

ant makejar

你当然可以通过像这样在构建文件中makejar依赖来定义它们build

<target name ="makejar" depends="build"description="Create a jar for the project">
    <jar jarfile="example.jar" includes="*.class" basedir="bin"/>
</target>

但是我很难看到这个构建文件在其他地方是如何正确运行的。

于 2013-02-03T21:42:54.330 回答