1

私は最近antを学び始め、いくつかの問題に遭遇しました。基本的に2つのパッケージがあり、両方をコンパイルしようとしていますが、両方のパッケージは相互に依存するJavaファイルで構成されています(egajavaのpackage1はb.javaのpackage2に依存しています。逆もまた同様です)したがって、たとえば以下のように、一方を他方なしでコンパイルすることはできません。

<?xml version="1.0"?>
  <project name="exampleproject" basedir="." default="compile">
  <property name="src1" value="package1"/>    
  <property name="src2" value="package2"/> 
  <property name="dest" value="build"/>
  <property name="classpath" value="${dest}"/>
<target name="clean">
    <delete dir="${dest}"/>
</target>
<target name="build" depends="clean">
    <mkdir dir="${dest}"/>
</target>
<target name="compile" depends="clean,build">
      <javac srcdir="${src1}" destdir="${dest}"
         classpath="${classpath}"
         includeantruntime="false">
       </javac>
       <javac srcdir="${src2}" destdir="${dest}"
         classpath="${classpath}"
         includeantruntime="false">
       </javac>
</target>
</project>

パッケージ1をコンパイルしようとしても、パッケージ2にはまだコンパイルされていないクラスがあるため、ビルドが失敗するので、これをテストしても機能しません。私が持っている唯一の解決策は、プログラムを再構築することです。

ありがとう。

4

2 に答える 2

3

http://ant.apache.org/manual/Tasks/javac.htmlによると:

javac の srcdir、classpath、sourcepath、bootclasspath、および extdirs 属性は、パスのような構造であり、ネストされた (別の名前に注意してください!)、、、および要素をそれぞれ介して設定することもできます。

だからあなたが使うことができます

  <javac destdir="${dest}" classpath="${classpath}" includeantruntime="false">
    <src path="${src1}"/>
    <src path="${src2}"/>
  </javac>
于 2012-11-12T15:39:13.317 に答える
2

単純に解決できない循環依存の問題が発生しました。モジュールを再編成して、依存関係のループがないようにする必要があります。通常、相互依存関係を3番目の新しいモジュールまたは種類に移行することをお勧めします。これがxy-commonsモジュールの誕生です。:-)

于 2012-11-12T15:34:18.010 に答える