Domanda

Sto cercando di costruire un Hudson plugin li ho modificati e richiede jdk1.6.Questo è bene, ma non vedo come posso dire, maven, in cui i diversi jdk.Ho trovato alcune menzioni su internet, ma che non sembra valere per me.Alcuni suggeriscono che l'aggiunta di alcune config per .m2/settings.xml ma non ho un settings.xml.Inoltre, non voglio usare 1.6 per tutti maven costruisce.

Un nodo è sto utilizzando mvn in cygwin, se interessa a tutti.Appare dovrei essere in grado di fare la specificazione del progetto pom file, ma esistente pom è abbastanza nude.

Così la linea di fondo è, c'è un modo per specificare un jdk per un'unica invocazione di maven?

È stato utile?

Soluzione

  

linea in modo di fondo è, c'è un modo per specificare un JDK per una singola invocazione di Maven?

cambiare temporaneamente il JAVA_HOME.

Altri suggerimenti

Sembra che Maven ora dà una soluzione qui: Fonti Compilazione utilizzando un diverso JDK

Diciamo che i tuoi punti JAVA_HOME a JDK7 (che si svolgerà processi Maven)

Il tuo pom.xml potrebbe essere:

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

Se i vostri sviluppatori è sufficiente aggiungere (e personalizzare) le seguenti righe nella loro settings.xml, il vostro pom sarà indipendente dalla piattaforma:

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

compilazione: compilare ha un proprietà utente che consente di specificare un percorso per il javac .

Si noti che questa proprietà utente funziona solo quando è fork true che è false per impostazione predefinita.

$ mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable=/path/to/the/javac compile

Potrebbe essere necessario raddoppiare citare il valore se contiene spazi.

> mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable="C:\...\javac" compile

Si veda anche Maven proprietà personalizzate la precedenza .

Come u ha detto "In più, non voglio usare 1.6 per tutti i Maven costruisce." .... Quindi meglio che posso dire modificare il file pom e specificare quale versione JDK da utilizzare.

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

Si farà in modo che il vostro progetto particolare utilizza tale versione del JDK.

voi, lo dico configurazione JAVA_HOME come Pascal dice: In cygwin se si utilizza bash come shell dovrebbe essere "export JAVA_HOME = / cygdrive / c / pathtothejdk" E non è mai danneggia esportare anche l'dir Java bin al percorso con "export PATH = $ {} JAVA_HOME / bin: $ {PATH}"

e anche aggiungere Maven-rispettare-plugin per assicurarsi che il JDK destra viene utilizzato. Questa è una buona pratica per il vostro pom.

<build>
 <plugins>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <executions>
        <execution>
          <id>enforce-versions</id>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireJavaVersion>
                <version>1.6</version>
              </requireJavaVersion>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

http://maven.apache.org/plugins/maven- enforcer-plugin / usage.html

So che la sua un vecchio thread. Ma ho avuto alcuni problemi con qualcosa di simile a questo in Maven per Java 8 sorgente del compilatore. Ho capito questo con una soluzione rapida di cui questo articolo pensato posso metterlo qui e forse può aiutare gli altri:

<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 utilizza variabile $ JAVACMD come il comando finale java, impostarlo in cui l'eseguibile java è commuterà Maven per diversi JDK.

Hudson permette anche di definire diversi tempi di esecuzione di Java, e lasciare che si richiama Maven con uno di questi. Date un'occhiata più da vicino nella pagina di configurazione.

Per Java 9 :

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>9</source>
                <target>9</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Ho avuto costruire problema con Maven all'interno di Eclipse su Windows 7.

Anche se ho osservato mvn accumulo stava funzionando bene da linea di comando.

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

Eclipse stava prendendo in considerazione come predefinito JVM un'installazione di JRE, invece di JDK così è stato venendo a mancare sulla compilation.

Ho aggiunto al eclipse.ini seguente riga:

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

Anche quando si inizia da Eclipse che ho usato in "obiettivi" nella sezione seguente elenco:

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

errore di compilazione ottenuto risolto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top