Как указать версию компилятора Java в pom.xml-файл?


Я написал код maven на netbeans, который имеет примерно более 2000 строк. Когда я компилирую его на netbeans, все в порядке, но если я хочу запустить его в командной строке, я получу эти ошибки:

generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
        ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();

generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
        HashSet<Double> resid_List = new HashSet<Double>(Arrays.asList(resid_val));

generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
        List<Integer> ind_ovlpList = new ArrayList<Integer>(Arrays.asList(ind_ovlp));

generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
public class ColumnComparator implements Comparator<double[]> {

annotations are not supported in -source 1.3
(use -source 5 or higher to enable annotations)
@Override

Я пытался использовать Java 1.3.1, ошибки компилятора, но я получил больше ошибок. Я нашел из других сообщений, что я должен изменить pom.xml, но я не знаю как. Вот мой пом.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mycompany</groupId>
  <artifactId>mavenmain</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>mavenmain</name>
    <url>http://maven.apache.org</url>

   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

   <dependencies>
     <dependency>
       <groupId>junit</groupId>
        <artifactId>junit</artifactId>
       <version>3.8.1</version>
       <scope>test</scope>
     </dependency>
     <dependency>
        <groupId>gov.nist.math</groupId>
        <artifactId>jama</artifactId>
        <version>1.0.2</version>
     </dependency>
   </dependencies>
 </project>

было бы здорово, если вы можете помочь мне.

4 222

4 ответа:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>(whatever version is current)</version>
        <configuration>
          <!-- or whatever version you use -->
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

см. страницу конфигурации для плагина компилятора maven:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

О, и: не используйте Java 1.3.x, текущие версии Java 1.7.x или 1.8.x

maven-compiler-plugin он уже присутствует в зависимости иерархии плагинов в pom.XML. Проверьте в эффективном пом.

для краткости вы можете использовать такие свойства:

<properties>
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Я использую maven 3.2.5

я столкнулся с той же проблемой в eclipse neon simple maven java project

но я добавляю ниже детали внутри pom.xml-файл

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

после щелчка правой кнопкой мыши по проекту > maven > обновить проект (проверено обновление силы)

его разрешить мне, чтобы отобразить сообщение об ошибке на проекте

надеюсь, что это будет полезно

Thansk

как правило, вы не хотите ценить только source версия (javac -source 1.8 например), но вы хотите значение как source и target версия (javac -source 1.8 -target 1.8 например).
Обратите внимание, что из Java 9 у вас есть способ передать как информацию, так и более надежный способ для совместимости с кросс-компиляцией (javac -release 9).
Maven, который обертывает javac команда предоставляет несколько способов передать все эти стандартные параметры JVM.

Как указать JDK версия?

используя maven-compiler-plugin или maven.compiler.source/maven.compiler.target свойства, чтобы указать source и target эквивалентны.

<plugins>
    <plugin>    
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>

и

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

эквивалентны в соответствии с Maven документация плагина компилятора так как <source> и <target> элементы в конфигурации компилятора используют свойства maven.compiler.source и maven.compiler.target если они определены.

источник

The