target/classes
文件夹中找到仍然可以编译的类。我已经将<failOnError>false</failOnError>
配置好了,但是没有生成任何类,甚至没有一个与其他类无关的虚拟类,除了Object
。是否有一些配置可以实现这个目标?
我有一个使用Maven构建的项目,其工作流程基本上包括以下(相关)目标:
...
init-compile
代码生成器(下面)使用反射为基础的配置文件,因此,在第一次尝试编译项目时,我希望尽可能多地编译,以便不会出现ClassNotFoundException。这个编译配置了
<failOnError>false</failOnError>
,所以构建过程可以继续进行。不幸的是(你可以称之为设计缺陷),该配置同时用于代码生成器(指定OWL文件和命名空间到包映射)和运行时,因此它还包含其他不需要的元素,但仍然被读取并且需要在类路径上才能成功。
generate-model
在这一步中,从OWL本体生成了一些模型类,创建了使项目的其余部分完全可编译的代码。
default-compile
现在,应该编译其他类,显然
save-model
现在,从本体中读取实例并将其序列化到文件以供运行时使用
...
附注:generate和save model都使用了maven-exec-plugin
,但我真的不认为这有任何影响。
问题:
当我使用mvn -e -U clean package source:jar javadoc:jar install:install
运行构建时,在generate-model
目标期间失败,并出现了我试图避免的错误。 target/classes
为空,因此似乎编译器没有输出它本来可以/应该处理的类的子集。是否有方法可以实现这一点?
我有两种解决方法,但我都不喜欢:
- 在将配置文件“AST”解析为Java对象之前编辑它,以便只解析与代码生成器相关的部分(需要调整我可以访问但应被我的项目视为不可变的代码);
- 并将
init-compile
目标配置为仅包括所需的类(过于死板,因为POM应/可能是使用相同模型的未来应用程序的模板)。