2017-09-04 9 views
0

jarファイルに含まれるgradleタスククラスから実行する必要があります。gradlesタスクからcommons-math Javaクラスを実行する

たとえば、クラスFastMath(http://commons.apache.org/proper/commons-math/download_math.cgi)を実行できるgradleタスクを作成したいとします。 ':T1' 実行がタスクに失敗しました:何が悪かったのか

apply plugin: 'java' 


repositories { 
    mavenCentral() 
} 

dependencies { 
    compile files('/pathToJars/commons-math3-3.6.1.jar') 
} 

task t1 { 
    doLast { 
     println FastMath.abs(3) 
    } 
} 

は、私は、このエラーメッセージが表示されます:

現在のbuild.gradleスクリプト

は次のとおりです。 タイプ 'org.gradle.api.DefaultTask'のタスク 't1'の不明なプロパティ 'FastMath'を取得できませんでした。私は私が間違っているのか、どのようにスクリプトを持っていますかと思っています

import org.apache.commons.math3.util.FastMath; 

:私は、私は次のステートメントを追加するたとえば、クラスのインポートをしないのですが、私は方法や場所がわからない理解

構成する。どんな提案も感謝します。

EDIT 1:実際に動作するコードは以下の通りです:

apply plugin:'java' 
import org.apache.commons.math3.util.FastMath; 

buildscript { 
    repositories { 
    mavenCentral() 
} 

    dependencies { 
     classpath 'org.apache.commons:commons-math3:3.6.1' 
    } 
} 

task t1 { 
    doLast { 
     println FastMath.abs(3) 
    } 
} 

答えて

1

さて、あなたはbuildscriptで複数の問題があります。

あなたはそこから依存関係を使用して、リポジトリとして mavenCentral()を使用する場合は、推移的依存関係の解決および自動競合解決を獲得すると、あなたのVCSまたはどこでLIBSを維持する必要はありません
  1. 、そうcompile files('/pathToJars/commons-math3-3.6.1.jar')実際にする必要がありますcompile 'org.apache.commons:commons-math3:3.6.1'

  2. 正しく指摘したように、あなたは、そのいずれか、完全修飾クラス名またはインポートを使用しprintln org.apache.commons.math3.util.FastMath.abs(3)によってprintln FastMath.abs(3)を交換、またはどこかの前にimport org.apache.commons.math3.util.FastMathを追加する必要がありますどちらか。通常、これはJavaの場合と同様に、ファイルの最上位で行われます。

  3. 実際のプロジェクトのコンパイルクラスパスに依存関係を追加するため、両方を実行しても、それは機能しません。代わりに、あなたのビルドスクリプトのクラスパスにそれを必要とするので、buildscriptブロック内のdependenciesブロックを移動する必要があります。アドバイス1に従っていれば、もちろんrepositoriesブロックにもなります。また、依存宣言にcompileの代わりにclasspathが必要です。

関連する問題