2016-02-16 42 views
10

Z powodu niezgodności między projektem scala 2.9.2 a wersją java 8, muszę ręcznie określić użycie jvm w moim projekcie maven.Konfiguracja pom wymusić użycie jvm 7 z wtyczką scala maven

pom.xml robię, stosując dokumentację here:

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.netlogo.extension</groupId> 
    <packaging>jar</packaging> 
    <artifactId>rungekuta</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <version>${lib.org.scala-lang.scala.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.nlogo</groupId> 
      <artifactId>netlogo</artifactId> 
      <version>5.2</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <properties> 
     <lib.org.scala-lang.scala.version>2.9.3</lib.org.scala-lang.scala.version> 
     <maven.scala.version>${lib.org.scala-lang.scala.version}</maven.scala.version> 
    </properties> 

    <build> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>net.alchim31.maven</groupId> 
        <artifactId>scala-maven-plugin</artifactId> 
        <version>3.2.1</version> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.5.1</version> 
        <configuration> 
         <source>1.7</source> 
         <target>1.7</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
       <version>3.2.1</version> 
       <executions> 
        <execution> 
         <id>scala-compile-first</id> 
         <phase>process-resources</phase> 
         <goals> 
          <goal>add-source</goal> 
          <goal>compile</goal> 
          <goal>testCompile</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <archive> 
         <manifestEntries> 
          <Extension-Name>rungekuta</Extension-Name> 
          <Class-Manager>org.netlogo.extension.rungeKuta.RungeKutaExtension</Class-Manager> 
          <NetLogo-Extension-API-Version>5.0</NetLogo-Extension-API-Version> 
         </manifestEntries> 
        </archive> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <verbose>true</verbose> 
        <fork>true</fork> 
        <executable>/home/reyman/Logiciels/jdk1.7.0_80/bin/javac</executable> 
        <compilerVersion>1.3</compilerVersion> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 


    <name>${project.artifactId} ${project.version}</name> 


    <repositories> 
     <repository> 
      <id>snapshots.scala-tools.org</id> 
      <name>Scala snapshots repository</name> 
      <url>http://scala-tools.org/repo-snapshots/</url> 
     </repository> 
     <repository> 
      <id>scala-tools.org</id> 
      <name>Scala repository</name> 
      <url>http://scala-tools.org/repo-releases/</url> 
     </repository> 
    </repositories> 

</project> 

próbuję to bez powodzenia, Maven nadal używać mojego obecnego JVM 8 i nie jvm podane w maven-compiler-plugin: <executable>/home/reyman/Logiciels/jdk1.7.0_80/bin/javac</executable>

Jak czy mogę wymusić użycie jvm 7 podczas mvn compile mojego projektu mieszanych źródeł scala/java?

+0

Co się dzieje z ' 1.3' też? – Tunaki

+0

Hum, doc mówi 1.3 lub 1.5, niezbyt jasne ...: https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerVersion – reyman64

+0

To jest przykład. Czy możesz spróbować ustawić "1.7" lub "7"? – Tunaki

Odpowiedz

5

Ten pracował dla mnie:

<plugin> 
    <inherited>true</inherited> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 
+0

Witam, próbuję bez powodzenia, czy możesz dać mi swój kompletny ''? – reyman64

5

używać coś takiego:

<plugin> 
<groupId>net.alchim31.maven</groupId> 
<artifactId>scala-maven-plugin</artifactId> 
<version>3.2.1</version> 
<configuration> 
    <source>${java.version}</source> 
    <target>${java.version}</target> 
</configuration> 
</plugin> 

modyfikowania go na swoje potrzeby.

Oto moja kompletna kompilacja, nie wiem, czy to ci pomoże. jestem wklejając go tutaj, bo to zbyt długo na komentarz:

<build> 
    <finalName>KAIBICHI</finalName> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <additionalProjectnatures> 
        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
       </additionalProjectnatures> 
       <additionalBuildcommands> 
        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
       </additionalBuildcommands> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>true</downloadJavadocs> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
       <compilerArgument>-Xlint:all</compilerArgument> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <configuration> 
       <mainClass>org.test.int1.Main</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+0

Witam, próbuję bez powodzenia, czy możesz dać mi kompletny ? Potrzebuję kompilacji scala/java. – reyman64

+0

edytował mój asnwer – Irakli

3

miałem ten sam problem próbuje użyć minify-maven-plugin 1.7 z java6. Potrzebuje Java7. Problemem jest to, że Maven musi uruchomić z właściwym JVM do używania wtyczek, więc jedynym rozwiązaniem znalazłem eksportować JAVA_HOME przed uruchomieniem Maven:

ORIGINAL_JAVA_HOME=$JAVA_HOME 
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79 
mvn jetty:run 
export JAVA_HOME=$ORIGINAL_JAVA_HOME 

jeśli trzeba to robić częściej może można dodać do bashrc aliasem jak

alias mvn7='ORIGINAL_JAVA_HOME=$JAVA_HOME; export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79; mvn jetty:run; export JAVA_HOME=$ORIGINAL_JAVA_HOME' 
+0

Tak, w tej chwili jest to jedyna odpowiedź, którą znalazłem tutaj, która działa ... – reyman64

+0

Możesz również użyć .mavenrc do ustawienia JAVA_HOME http://stackoverflow.com/questions/18813828/why-maven- use-jdk-1-6-but-my-java-version-is-1-7 – Eashi

2

ten pracował dla mnie, ale musiałem pozwolić Eclipse (Mars), aby dostosować konfigurację wtyczek. Przetestowałem mój plik pom.xml pustym projektem i wygląda na to, że buduję bez incydentów.

Używam jenv do zarządzania środowiskiem Java poza środowiskiem Eclipse, co jest znacznie łatwiejsze, gdy zainstalowanych jest wiele wersji Java.

Oto pom.xml Używam:

<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/maven-v4_0_0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 

     <groupId>org.netlogo.extension</groupId> 
     <packaging>jar</packaging> 
     <artifactId>rungekuta</artifactId> 
     <version>1.0-SNAPSHOT</version> 

     <dependencies> 
      <dependency> 
       <groupId>org.scala-lang</groupId> 
       <artifactId>scala-library</artifactId> 
       <version>${lib.org.scala-lang.scala.version}</version> 
      </dependency> 
      <!-- 
      <dependency> 
       <groupId>org.nlogo</groupId> 
       <artifactId>netlogo</artifactId> 
       <version>5.2</version> 
       <scope>provided</scope> 
      </dependency> 
      --> 
     </dependencies> 

     <properties> 
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
      <lib.org.scala-lang.scala.version>2.9.3</lib.org.scala-lang.scala.version> 
      <maven.scala.version>${lib.org.scala-lang.scala.version}</maven.scala.version> 
     </properties> 

     <build> 
      <pluginManagement> 
       <plugins> 
        <plugin> 
         <groupId>net.alchim31.maven</groupId> 
         <artifactId>scala-maven-plugin</artifactId> 
         <version>3.2.1</version> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-compiler-plugin</artifactId> 
         <version>3.5.1</version> 
         <configuration> 
          <source>1.7</source> 
          <target>1.7</target> 
         </configuration> 
        </plugin> 
        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> 
        <plugin> 
         <groupId>org.eclipse.m2e</groupId> 
         <artifactId>lifecycle-mapping</artifactId> 
         <version>1.0.0</version> 
         <configuration> 
          <lifecycleMappingMetadata> 
           <pluginExecutions> 
            <pluginExecution> 
             <pluginExecutionFilter> 
              <groupId> 
               net.alchim31.maven 
              </groupId> 
              <artifactId> 
               scala-maven-plugin 
              </artifactId> 
              <versionRange> 
               [3.2.1,) 
              </versionRange> 
              <goals> 
               <goal>testCompile</goal> 
              </goals> 
             </pluginExecutionFilter> 
             <action> 
              <ignore></ignore> 
             </action> 
            </pluginExecution> 
           </pluginExecutions> 
          </lifecycleMappingMetadata> 
         </configuration> 
        </plugin> 
       </plugins> 
      </pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>net.alchim31.maven</groupId> 
        <artifactId>scala-maven-plugin</artifactId> 
        <version>3.2.1</version> 
        <executions> 
         <execution> 
          <id>scala-compile-first</id> 
          <phase>process-resources</phase> 
          <goals> 
           <goal>add-source</goal> 
           <goal>compile</goal> 
           <goal>testCompile</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-jar-plugin</artifactId> 
        <version>2.2</version> 
        <configuration> 
         <archive> 
          <manifestEntries> 
           <Extension-Name>rungekuta</Extension-Name> 
           <Class-Manager>org.netlogo.extension.rungeKuta.RungeKutaExtension</Class-Manager> 
           <NetLogo-Extension-API-Version>5.0</NetLogo-Extension-API-Version> 
          </manifestEntries> 
         </archive> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 


     <name>${project.artifactId} ${project.version}</name> 


     <repositories> 
      <repository> 
       <id>snapshots.scala-tools.org</id> 
       <name>Scala snapshots repository</name> 
       <url>http://scala-tools.org/repo-snapshots/</url> 
      </repository> 
      <repository> 
       <id>scala-tools.org</id> 
       <name>Scala repository</name> 
       <url>http://scala-tools.org/repo-releases/</url> 
      </repository> 
     </repositories> 

    </project>