0

テストビルドに含めたいプロファイリングの側面をいくつか開発しましたが、製品ビルドには含めません。build.gradle ファイルとソース ディレクトリを構成するベスト プラクティスの方法を探しています。

最初に考えたのは、compileJavaAJ タスクと、compileJavaAJ に依存する jarAJ タスクを作成することでした。compileJavaAJ は、aspectJ プラグインhttp://github.com/breskeby/gradleplugins/raw/0.9-upgrade/aspectjPlugin/aspectJ.gradleで定義されている compileJava と非常によく似ています。このプラグインを適用するだけの問題は、compileJava (つまり、javac を使用するもの) を完全に置き換えることです。2 つのビルド ターゲットが必要です。1 つは javac を使用し、もう 1 つは ajc を使用します。ただし、より良いアプローチがあれば提案を歓迎します。

次に、aspectJ コードを配置する場所を決定する必要があります。Javaコンパイラがそれを詰まらせるので、私はそれをsrc/main/javaに入れたくありません。そこで、compileJavaAJ だけが知っている新しい SourceSet src/main/aspectJ を定義しようと考えています。ただし、SourceSet は Java コードをモデル化することになっているため、これが正しいアプローチであるかどうかはよくわかりません。

どんな入力でも大歓迎です。ありがとう!

4

1 に答える 1

0

「withAspectJ」のようなプロパティを使用して、アスペクトの有無にかかわらずコンパイルを区別します。次のスニペットを見てください。

if(project.hasProperty('withAspectj') && project.getProperty("withAspectj")){
    sourceSets {
        main {
            java {
                srcDir 'src/main/aspectj'
            }
        }
    }
}

このスニペットは、withAspectj という名前のプロパティが true と評価された場合、ディレクトリ src/main/aspectj をメイン ソースセットに追加します。これで、すべてのアスペクトをこの特定のディレクトリに配置できます。withAspectj プロパティを渡さない場合、置き換えられた compileJava タスクは、アスペクトをワイヤリングせずにコードをコンパイルします。ただし、コマンド ラインからビルドを実行する場合: gradle build -PwithAspectj=true

src/main/aspectj にあるすべてのアスペクトがコードに組み込まれます。

お役に立てば幸いです。

よろしく、

レネ

于 2012-06-05T05:47:19.400 に答える