maven-2 - maven指定jdk




指定JDK供Maven使用 (7)

所以底線是,有沒有一種方法可以為單個maven調用指定一個jdk?

暫時改變你的JAVA_HOME

我正在嘗試構建一個我修改過的Hudson插件,它需要jdk1.6。 這很好,但我不明白我可以告訴maven哪裡有不同的jdk。 我在互聯網上發現了一些提及但他們似乎不適用於我。 有人建議在.m2/settings.xml添加一些配置,但我沒有settings.xml 。 另外,我不想在所有的Maven構建中使用1.6。

有一點是我在cygwin使用mvn ,如果這很重要的話。 看起來我應該能夠在項目pom文件中做出規範,但現有的pom是相當裸露的。

所以底線是,有沒有一種方法可以為單個maven調用指定一個jdk?


Maven使用變量$ JAVACMD作為最終的java命令,將其設置為java可執行文件將Maven切換到不同JDK的位置。


似乎maven現在提供了一個解決方案: 使用不同的JDK編譯源代碼

假設您的JAVA_HOME指向JDK7(它將運行Maven進程)

你的pom.xml可以是:

<build>
    <plugins>
        <!-- we want JDK 1.6 source and binary compatiblility -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <!-- ... -->
        <!-- we want sources to be processed by a specific 1.6 javac -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
              <verbose>true</verbose>
              <fork>true</fork>
              <executable>${JAVA_1_6_HOME}/bin/javac</executable>
              <compilerVersion>1.3</compilerVersion>
            </configuration>
        </plugin>
    </plugins>
</build>

如果您的開發人員只是在settings.xml添加(和自定義)以下行,您的pom將成為獨立平台:

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

哈德森還允許您定義幾個Java運行時,並讓您使用其中的一個調用Maven。 仔細查看配置頁面。


我在Windows 7的Eclipse中使用Maven構建了一個問題。

雖然我觀察到mvn build從命令行運行得很好。

mvn -T 5 -B -e -X -U -P test clean install -Dmaven.surefire.debug  --settings ..\..\infra-scripts\maven-conf\settings.xml   > output.log

Eclipse正在考慮將默認JVM作為JRE安裝而不是JDK,因此它在編譯時失敗。

我添加到eclipse.ini以下行中:

-vm
C:\Program Files (x86)\Java\jdk1.8.0_25\bin

另外,當我從“目標”部分下面的列表中使用eclipse時:

-T 5 -B -e -X -U -P test clean install -Dmaven.surefire.debug  --settings ..\..\infra-scripts\maven-conf\settings.xml

編譯錯誤得到解決。


我知道它是一條古老的線索。 但是我在Maven for Java 8編譯器源代碼中遇到了一些與此類似的問題。 我想到了這篇文章中提到的一個快速修復,以為我可以把它放在這裡,也許可以幫助別人:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

正如你所說的“另外,我不希望所有maven版本都使用1.6”。....所以我會說修改你的pom文件並指定要使用哪個jdk版本。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.9</source>
                <target>1.9</target>
            </configuration>
        </plugin>
    </plugins>
</build>

它將確保您的特定項目使用該版本的jdk。





pom.xml