0

このApacheCommonsConfigurationの適切な使用法と同じ問題に遭遇しました。つまり、CommonsLangは依存関係として含まれていません。

eclipseとIDEAの両方がそれを取得しますが、ANTのjavacは取得しません。

<javac debug="true" destdir="${build.classes.dir}" srcdir="${src.dir}" includeantruntime="false">
  <classpath refid="build.classpath"/>
</javac>

ビルドサーバーがこれらの依存関係の問題を検出し、誰かがそれらを見逃した場合にビルドを失敗できるようにしたいと思います。

4

3 に答える 3

0

ivyを使用して、ビルドのサードパーティの依存関係を管理します。

<ivy:cachepath pathid="build.classpath">
    <dependency org="commons-lang" name="commons-lang" rev="2.6" conf="default"/>
</ivy:cachepath>

デフォルトでは、 ivyはMaven Centralリポジトリからダウンロード(およびキャッシュ)し、推移的な依存関係(依存関係の依存関係)を認識します。

于 2012-11-07T20:20:17.940 に答える
0

以下のようにタスクを追加します

<fail  message="Missing the commons lang jar dependency.">
  <condition>
     <not>  
     <available file="common-lang.jar"/>
     </not>
  </condition>
</fail>

Ant失敗タスクリンク:https ://ant.apache.org/manual/Tasks/fail.html

于 2012-11-07T20:19:04.917 に答える
0

Suresh Koyaは近くにいますが、いくつかの問題があります。

  • Suresh の方法はcommons-lang.jar、実際に現在のディレクトリにある場合にのみ機能します。
  • jar が のような名前の場合も機能しませんcommons-lang-2.6.jar

<filepath>1 つ目は、サブエンティティを に追加することで修正できます<available>。これにより<available>、jar を検索するためのディレクトリ パスが条件に与えられます。ただし、ユーザーcommons-langがバージョン番号を付けてダウンロードした場合は機能しません (Maven リポジトリからの場合と同様)。

この問題を回避するには、次のようなものを使用してパス リソースを作成し<fileset>、commons-lang jarfile のいずれかのバージョンを取得したかどうかを確認する必要があります。commons-langで始まり、接尾辞を持つファイルを探していることが以下でわかります.jar

リソースを設定したら、<resoucecount>条件を使用して のいずれかのバージョンを選択したかどうかを確認できcommons-langます。

<path id="commons-lang.path">
     <fileset dir="${lib.dir}">
         <incude name="commons-lang*.jar"/>
     </fileset>
</path>

<fail message="Missing commons-lang Jar">
    <condition>
        <resourcecount refid="commons-lang.path" 
             when="equals" count="0"/>
    </condition>

ここで、commons-lang jar について何か知っていれば、<available>条件を使用してクラスパス内の特定のクラスを検索できたはずです。

<fail message="Can't find commons-lang Jar">
     <condition>
         <not>
            <available classname="org.apache.commons.lang.Entities">
                 <classpath refid="compile.classpath"/>
            </available>
         </not>
     </condition>
</fail>

これにより、名前に関係なく commons-lang jar が検出されます。

Ivy に興味がある場合は、開発サイト全体に Ivy を簡単に追加できるプロジェクトをGitHubに用意しています。サードパーティの依存関係の管理は、進むべき道です。Ivy の使用は、Ant と統合されるため、優れています。Maven と Gradle には利点がありますが、それらを使用するには、ビルド インフラストラクチャ全体をやり直す必要があります。

于 2012-11-08T01:16:15.203 に答える