Question

J'essaie de créer un plugin Hudson que j'ai modifié et qui nécessite jdk1.6.C'est bien, mais je ne vois pas comment dire à Maven où se trouvent les différents jdk.J'ai trouvé peu de mentions sur Internet mais elles ne semblent pas s'appliquer à moi.Certains suggèrent d'ajouter une configuration à .m2/settings.xml mais je n'ai pas de settings.xml.De plus, je ne veux pas utiliser la version 1.6 pour toutes les versions de Maven.

Un problème, c'est que j'utilise mvn dans Cygwin, si cela compte du tout.Il semble que je devrais pouvoir faire la spécification dans le fichier pom du projet, mais le pom existant est plutôt vide.

En fin de compte, existe-t-il un moyen de spécifier un jdk pour une seule invocation de maven ?

Était-ce utile?

La solution

  

La ligne du bas est donc, est-il un moyen de spécifier un JDK pour une seule invocation de Maven?

modifier temporairement votre JAVA_HOME.

Autres conseils

Il semble que maven donne maintenant une solution ici: Sources Compiler en utilisant un autre JDK

Disons que vos points de JAVA_HOME à JDK7 (qui se déroulera les processus Maven)

Votre pom.xml pourrait être:

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

Si votre developpeurs juste ajouter (et personnaliser) les lignes suivantes dans leur settings.xml, votre pom sera la plate-forme indépendante:

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

compilation: compilation a une propriété utilisateur qui vous permet de spécifier un chemin d'accès au javac .

Notez que cette propriété utilisateur ne fonctionne que lorsque fork est true qui est false par défaut.

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

Vous pourriez avoir à guillemet la valeur si elle contient des espaces.

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

Voir aussi Maven propriétés personnalisées priorité.

u dit « De plus, je ne veux pas utiliser 1.6 pour tout Maven construit. » .... Alors je vais dire mieux modifier votre fichier pom et spécifier la version JDK à utiliser.

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

Il veillera à ce que votre projet particulier utilise cette version de JDK.

Je vous dis JAVA_HOME de configuration comme Pascal dit: Dans Cygwin si vous utilisez bash comme shell doit être "export JAVA_HOME = / cygdrive / c / pathtothejdk" Et il ne nuit jamais à exporter aussi le bac java dir au PATH avec "export PATH = $ {JAVA_HOME} / bin: $ {PATH}"

et également ajouter maven-plugin-appliquer pour vous assurer que le droit jdk est utilisé. Ceci est une bonne pratique pour votre 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

Je sais que un vieux fil. Mais j'avais des problèmes avec quelque chose de semblable à ce Maven pour la source du compilateur Java 8. Je me suis dit cela avec une solution rapide mentionné dans cet article pensait que je peux le mettre ici et peut-être aider les autres:

<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 utilise la variable $ JAVACMD comme la commande java finale, réglez-le à l'endroit où l'exécutable java est basculera maven à JDK.

Hudson vous permet également de définir plusieurs runtimes Java, et laissez-vous invoquez Maven avec un d'eux. Jetez un oeil sur la page de configuration.

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

J'ai eu construire problème avec Maven dans les Eclipse sous Windows 7.

Bien que j'observé la construction de mvn fonctionnait très bien de la ligne de commande.

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

Eclipse envisage par défaut JVM une installation de JRE au lieu de JDK il échouait sur la compilation.

J'ai ajouté à eclipse.ini ligne suivante:

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

Aussi lors du démarrage de l'éclipse je dans la section « Objectifs » liste suivante:

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

Erreur de compilation se est résolu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top