使用Java Compiler API从JUnit测试运行Java编译器非常简单。测试检查我是否可以使用临时类加载器加载新代码并且清理工作等等
我的问题是使用Maven编译和/或运行测试。
如果我使用依赖项添加java编译器,我必须将范围设置为test
。如果我这样做,那么在编译测试时tools.jar
将被添加到类路径中,这意味着类路径上将有两个 Java编译器。
范围runtime
也是如此,但这也会将Java编译器添加到我的工件中,使其泄漏。所有其他范围甚至更糟。
我该如何解决这个问题?
答案 0 :(得分:0)
您确定需要java编译器依赖吗?没有任何特殊(编译器)依赖,Java Compiler API对我有用(因为它是JDK的一部分)。
您可以使用getTask
final List<String> options = new ArrayList<String>();
options.add("-target");
options.add("1.3");
options.add("-source");
options.add("1.3");
参数设置目标VM版本,例如:
{{1}}