Konstantin Weitz
Konstantin Weitz

Reputation: 6422

Force Maven to use System's javac

I have made some code changes to javac and would like maven to use the version of javac that I changed. Unfortunately, it appears that maven ships its own javac implementation. How can I get maven to compile sources using the system wide javac (the one that is executed when running javac in the shell).

Without really knowing what these options mean, I tried providing the fork, and forceJavacCompilerUse which I found here: http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html But they do not appear to help at all.

Upvotes: 2

Views: 6557

Answers (2)

paulsm4
paulsm4

Reputation: 121699

You're in the right ballpark. Look here:

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

To avoid hard-coding a filesystem path for the executable, you can use a property. For example:

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

Each developer then defines this property in settings.xml, or sets an environment variable, so that the build remains portable.

<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>

If you build with a different JDK, you may want to customize the jar file manifest.

I believe the key is setting an explicit <executable>. And I suspect it can probably be hard-coded, without messing with environment variables or other clauses.

See also this link, and look at the "executable" in the sample pom.xml:

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

Upvotes: 1

Sajith Silva
Sajith Silva

Reputation: 823

I believe maven looks for JVA_HOME for finding the java. So when you set it to your specific java maven should be able to use it

Upvotes: 0

Related Questions