問題がありますか?
問題がありますか?
このページでは、Apache Antで発生している問題を解決するために実行できる手順を詳しく説明します。問題を解決できない場合は、このページがバグレポートで提供する関連情報を収集するのに役立ちます。この情報は、Ant開発者が問題を理解し解決するのに役立ちます。もちろん、ここに示すすべての手順が、発生する可能性のあるすべての問題に当てはまるわけではありません。これらは、正しい方向を示すためのいくつかの提案にすぎません。
実際に実行しているAntのバージョンであることを確認してください
多くのツールにはAntのバージョンが含まれており、一部のオペレーティングシステムではデフォルトでインストールされるようになりました。そのため、気づいていないAntのバージョンがインストールされている可能性があります。
最初に実行するべきことの1つは、次を実行して確認することです。
ant -version
および
ant -diagnostics
また、CLASSPATHを空にしてAntを実行することを強くお勧めします。CLASSPATHから他のバージョンのAntをロードできる場合、互換性のないクラスがロードされるため、多くの種類のエラーが発生する可能性があります。
FAQのいくつかの例を参照してください。しかし、システムの古いバージョンのAntが原因である他の多くの問題もあります。
マニュアルを読む
Antで問題が発生した場合に最初に行うべきことは、問題が発生しているタスクまたは概念のマニュアルエントリを読むことです。特に、タスクの属性とネストされた要素の意味を確認してください。必要な動作を提供する属性が利用可能である可能性があります。マニュアル自体に問題がある場合は、Antのドキュメントを改善するために、ドキュメントのバグレポートを送信できます(下記参照)。
デバッグ出力を調べる
それでも問題が発生する場合は、Antが何をしているかに関する追加情報を収集しようとすることが次のステップです。verbose
フラグを付けてAntを実行してみてください。
ant -verbose
または
ant -v
これにより、次のような出力が生成されます。
Ant version 1.4.1 compiled on October 11 2001 ビルドファイル: build.xml 検出されたJavaバージョン:1.3 in: D:\usr\local\java\jdk13\jre 検出されたOS:Windows NT URI = file:D:/ant/build.xmlでビルドファイルD:\ant\build.xmlを解析しています プロジェクトのベースディレクトリが設定されました:D:\ant [property] 環境 env.をロードしています [property] D:\ant\conf.propertiesをロードしています ターゲット「debug」のビルドシーケンスは[debug]です 完全なビルドシーケンスは[debug, gensrc, compile, jar, test]です . . . |
トレースから、Antが何をしているか、なぜ特定の行動を取っているかについてより多く知ることができるはずです。さらに情報が必要な場合は、-verbose
ではなく-debug
フラグを使用できます。これにより通常、非常に多くの出力が生成されるため、出力をファイルに保存してエディターで分析することをお勧めします。-logfile <filename>
フラグを使用するか、リダイレクトを使用して出力を保存できます。
このすべてのデバッグ情報を入手したら、どのようにしてそれを使って問題を解決できるでしょうか?それは、問題のタスクと問題の性質によって異なります。各タスクは、その操作のさまざまな側面をログに記録しますが、何が起こっているかを理解するのに役立つはずです。たとえば、<javac>
タスクは、特定のクラスファイルをコンパイルすることを選択し、他のクラスファイルをスキップすることを選択した理由、使用しているコンパイラ、およびそのコンパイラに渡す引数をログに記録します。次の部分的なトレースは、<javac>
が1つのクラスファイルを追加し、別のクラスファイルをスキップする理由を示しています。これに続いて、使用するコンパイラ、コンパイラに渡される引数、およびコンパイルされるすべてのクラスファイルの一覧が示されます。
[javac] D:\classes\Test.classが最新であるため、Test.javaは省略されました。 [javac] D:\classes\Unset.classが古いため、Unset.javaが追加されました。 [javac] 1つのソースファイルをD:\classesにコンパイルしています [javac] クラシックコンパイラを使用しています [javac] コンパイル引数:-d D:\classes -classpath D:\classes; D:\jdk118\classes.zip; -sourcepath D:\src\java -g:none [javac] コンパイルするファイル D:\src\java\Unset.java |
多くの場合、AntタスクはOSコマンドまたは他のJavaクラスをラップしたものです。デバッグモードでは、これらのタスクの多くが<javac>
タスクの出力と同様に、同等のコマンドラインを出力します。問題が発生している場合は、Antが実行しているのと同じ方法でコマンドラインから直接コマンドを実行して、そこでも問題が発生するかどうかを確認すると便利なことがよくあります。問題は、実行されているコマンドにあるか、Antタスクがコマンドを実行する方法にある可能性があります。生成されたコマンドラインで属性値を変更した効果を確認することもできます。これは、正しい属性と値を使用しているかどうかを理解するのに役立ちます。
修正済みですか?
デバッグ出力を調べた後、まだ発生している問題がAntによって引き起こされていると確信する場合は、他の誰かがすでにこの問題に遭遇しており、おそらく修正されている可能性があります。したがって、次のステップは、antのソースをダウンロードすることです。 svnを参照してください。
Gumpは毎晩antをビルドし、最新のソースからビルドされたantを使用して、長いリストのオープンソースプロジェクトをビルドしています。ただし、gumpによってビルドされたantのバージョンはダウンロードできません。たとえそうであったとしても、ほとんどのオプションのタスクは含まれません。
現在、オプションのタスクを含む毎晩のビルドはありません。
バグ
修正されていないバグを特定したと確信している場合は、バグデータベースに関するドキュメントを参照してください。