0

我们已经开发了一些我们希望包含在测试版本中的分析方面,但不包含在我们的生产版本中。我正在寻找一种构建 build.gradle 文件和源目录的最佳实践方式。

我最初的想法是创建一个 compileJavaAJ 任务,以及一个依赖于 compileJavaAJ 的 jarAJ 任务。compileJavaAJ 看起来与 aspectJ 插件http://github.com/breskeby/gradleplugins/raw/0.9-upgrade/aspectjPlugin/aspectJ.gradle中定义的 compileJava 非常相似。仅仅应用这个插件的问题是它完全取代了compileJava(即使用javac的那个)。我需要两个构建目标——一个使用 javac,另一个使用 ajc。如果有更好的方法,我欢迎提出建议。

接下来,我需要决定将 aspectJ 代码放在哪里。我不想把它放在 src/main/java 中,因为 java 编译器会阻塞它。所以,我正在考虑定义一个新的 SourceSet,src/main/aspectJ,它只有 compileJavaAJ 知道。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 回答