检查Java代码是否在Maven插件中运行

我正在编写一个可以调用的基于Xtext的代码生成器:

>直接(使用main(String [])方法)
>在Eclipse中(作为Eclipse代码生成器插件)
>通过’xtext-maven-plugin’

现在我必须解决一些特定于Maven的问题.为了做到这一点,我需要知道我的代码是否在Maven中运行.

我的第一个想法是检查maven.home系统属性,如下所示:

if (System.getProperty("maven.home") != null) {
    // In Maven
}

有没有更好的方法呢?

最佳答案 除非您编写了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).

点赞