我正在编写一个可以调用的基于Xtext的代码生成器:
main(String[])
方法)现在我必须解决一些特定于Maven的问题。为了做到这一点,我需要知道我的代码是否在Maven中运行。
我的第一个想法是检查maven.home
系统属性,如下所示:
if (System.getProperty("maven.home") != null) {
// In Maven
}
有更好的方法吗?
答案 0 :(得分:1)
除非您编写了Maven插件,并且您的代码是该Maven插件的一部分,并且您通过在build / plugins / plugin区域下添加到pom.xml来配置该代码,您可能只使用Maven编译
检查环境变量不会告诉您是否“在maven插件中”,因为即使maven未运行,环境变量也存在。要查看你是否“在maven插件中”,你需要请求maven进行依赖注入并查看它是否失败(这是通过丛集容器完成的,如果你不认识我在说什么,你又不是在maven插件中。)
我99%肯定你的代码在请求maven编译时失败了。这可能是由于您的编译器配置比您使用的IDE有更严格的要求。如果是这样,最好的答案是修复您的代码以符合更严格的Maven要求;因为,通常会采用严格的要求来确保代码在更多场景中正常运行。
我还会检查你的maven构建配置(pom.xml),看它是否使用与你的IDE相同的java版本。有时,在配置IDE时,选择与maven pom.xml使用的不同的编译级别(比如java 1.8)(比如Java 1.7)。