强制Maven使用System的javac

时间:2013-04-23 05:43:21

标签: maven javac

我已经对javac进行了一些代码更改,并希望maven使用我更改的javac版本。不幸的是,似乎maven发布了自己的javac实现。如何使用系统范围的javac(在shell中运行javac时执行的javac)来编译maven。

我不知道这些选项意味着什么,我尝试提供我在此处找到的forkforceJavacCompilerUsehttp://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html 但它们似乎没有任何帮助。

2 个答案:

答案 0 :(得分:1)

你是在正确的球场。看这里:

  

http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html

     

为避免对可执行文件的文件系统路径进行硬编码,您可以使用   财产。例如:

     

<executable>${JAVA_1_4_HOME}/bin/javac</executable>

     

然后每个开发人员在settings.xml中定义此属性,或者设置一个   环境变量,以便构建保持可移植性。

<settings>   
    [...]   
  <profiles>
    [...]
    <profile>
      <id>compiler</id>
        <properties>
          <JAVA_1_4_HOME>C:\Program Files\Java\j2sdk1.4.2_09</JAVA_1_4_HOME>
        </properties>
    </profile>   
  </profiles>   
  [...] 
  <activeProfiles>
    <activeProfile>compiler</activeProfile>   
  </activeProfiles> 
</settings>
  

如果使用不同的JDK构建,则可能需要自定义jar   文件清单。

我认为关键是设置一个明确的<executable>。我怀疑它可能是硬编码的,不会弄乱环境变量或其他条款。

另请参阅此链接,并查看示例pom.xml中的“可执行文件”:

Where is the JDK version to be used by Maven compiler specified?

答案 1 :(得分:0)

我相信maven会寻找JVA_HOME来寻找java。因此,当您将其设置为特定的Java时,maven应该可以使用它