2016-10-12 34 views
1

現在の状況: ビルドシステムをAntからGradleに移行しています。現在、クラスパスとビルドパスに関する問題に直面しています。移行Ant Gradle - Eclipseのクラスパスとビルドパスの問題

<target name="compile"> 
     <mkdir dir="${build.compile.target}/classes" /> 
     <javac srcdir="${src}" destdir="${build.compile.target}/classes"> 
      <classpath> 
       <fileset dir="${build.war}/WEB-INF/lib"> 
        <include name="**/*.jar" /> 
       </fileset> 
       <pathelement location="${build.war}/WEB-INF/classes" /> 
      </classpath> 
     </javac> 
    </target> 

開発者は通常、warファイルを作成するには、次のセットアップローカルターゲットを実行する、など

<target name="setup-local" depends="clean"> 
    <antcall target="copy_webapp" /> 
    <antcall target="compile" /> 

copy_webappターゲットがコピーされます。ここでは、現在のAntのコンパイルターゲット定義であります.jarと.classファイルをディレクトリから$ {build.war}ディレクトリにコピーします。残念なことに、このコピーターゲットは、ファイルに関連する変更を加える際に本当に必要です(2つのディレクトリから1つのファイルにマージする、上書きする、ファイルを変更するなど)。コメントなしのレガシーコードです。 CLASSPATHにcopy_webappターゲットが事前に実行されたときにのみ存在しないファイルへの参照があります:物事は、彼らがどのようにしている理由)私にとって

問題を見つけます。十分な公正 - これは、常にセットアップローカルターゲットのみを実行する場合に機能します。

Gradleに移行してプロジェクトをEclipseにインポートした後、私の.javaファイルに何千ものエラーがあり、インポートを解決できないと言います。もちろん、そうではありません。ビルドパスには、存在しないファイル(例: "$ {build.war}/path/to/jar")があります。

私はこれらのエラーを解決する方法がわかりません。前にcopy_webappターゲットに依存しないようにクラスパスを再構成する必要がありますか?または、何らかの形で(Gradleを使用して)ビルドパスを修正してから、最初にcopy_webappターゲットを解決する必要がありますか?

+0

現在のグラデーションスクリプトを表示するまでお手伝いできません –

+0

eclipseプロジェクトを生成するために 'gradle eclipse'を実行していますか? – cmcginty

+0

はい、gradle eclipseを実行しています。私はそれが構造的な問題であるので、私の問題を解決するためにGradleスクリプトは必要ないと思います。 – SilverJan

答えて

0

あなたの問題の根底にある情報を得ると、それは難しいです。

プロジェクトをデプロイするために必要な複雑なディレクトリ構造および/または中間出力を生成しているGradleタスクがある場合、Eclipseプロジェクトの「ステージング」ディレクトリを作成することもできます。

私がこれに取り組む方法は、gradle eclipseを呼び出すときに実行されるサブタスクを作成することです。タスクの構成にit.dependsOn eclipse行を追加します。このタスクの出力は、build/eclipse/TaskNameまたはbuild/ディレクトリの説明的な場所になります。クラスパス参照は、build/ディレクトリの下の出力ディレクトリの場所を指すように更新する必要があります。

また、eclipseタスクがプロジェクトのクラスパスを生成するために使用しているクラスパスエントリを後処理して、タスク出力の場所を正しく参照する必要があります。

+0

私はタスクとビルドパスを再構築することで問題を解決しました。たぶん問題は広すぎて問題は十分に正確ではありませんでしたが、あなたの答えは情報 – SilverJan