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

时间:2015-10-28 15:41:51

标签: java maven

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

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

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

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

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

有更好的方法吗?

1 个答案:

答案 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)。