0

解決済み (下記参照)

Github に Java プロジェクトがあり、問題なく Eclipse Juno にインポートしました。Eclipse 内で自動的に ant ファイルを生成することも問題ではありません。ただし、build.xml を Github リポジトリにプッシュし、更新されたリポジトリを別のマシンにクローンして、ant を実行しようとすると、jar が作成されません。

Eclipseに依存しないEclipse 内でant ファイルを生成する方法はないようです。その印象は正しいですか?Ant ファイルを手動で編集する必要がありますか?

これは非常に単純なプロジェクトで、1 つのファイルはオブジェクト タイプを定義し、もう 1 つのファイルは単体テストです。

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- initJavaファイル以外のすべてをディレクトリにコピーし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 に答える