Estou tentando criar um plugin do Hudson que modifiquei e requer o jdk1.6. Isso é bom, mas não vejo como posso dizer ao maven onde está o jdk diferente. Encontrei poucas menções na internet, mas elas não parecem se aplicar a mim. Alguns sugerem adicionar algumas configurações para, .m2/settings.xml
mas eu não tenho um settings.xml
. Além disso, não quero usar o 1.6 para todas as compilações de maven.
Um problema é que estou usando o mvn
cygwin, se é que isso importa. Parece que eu devo ser capaz de fazer a especificação no arquivo pom do projeto, mas o pom existente é bastante simples.
Então, em suma, existe uma maneira de especificar um jdk para uma única invocação de maven?
set JAVA_HOME="C:\Java\jdk7"
JAVA_HOME
pode ser definido para o Maven (no Mac pelo menos) neste arquivo:/private/etc/mavenrc
- E isso pode usar algo como (observe as reticulares e não aspas simples!):export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_75`
export JAVA_HOME='D:/dev/java/jdk8/jre'
(funciona para mim)java -version
, ele ainda imprimirá a versão anterior.Parece que agora o maven fornece uma solução aqui: Compilando fontes usando um JDK diferente
Digamos que você
JAVA_HOME
aponte para o JDK7 (que executará processos automatizados)Você
pom.xml
pode ser:Se seus desenvolvedores apenas adicionarem (e personalizarem) as seguintes linhas
settings.xml
, o seu pom será independente da plataforma:fonte
-Dmaven.compiler.fork=true
e-Dmaven.compiler.executable=/path/to/target/javac
na linha de comando.compilar: compilar possui uma propriedade de usuário que permite especificar um caminho para o arquivo
javac
.Observe que essa propriedade do usuário funciona apenas quando
fork
é otrue
que éfalse
por padrão.Pode ser necessário citar duas vezes o valor se ele contiver espaços.
Consulte também precedência de propriedades personalizadas do Maven .
fonte
JAVA_HOME
variável. Por exemplo (no shell bash):JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn -Dmaven.compiler.fork=true -Dmaven.compiler.executable=/usr/lib/jvm/java-8-openjdk-amd64/bin/javac spring-boot:run
Como você disse: "Além disso, não quero usar o 1.6 para todas as compilações do maven." .... Então, melhor dizer: modifique seu arquivo pom e especifique qual versão do jdk usar.
Isso garantirá que seu projeto específico use essa versão do jdk.
fonte
Eu digo que você configura a
JAVA_HOME
variável de ambiente como Pascal está dizendo: No Cygwin, se você usar o bash, como seu shell deve ser:Nunca é prejudicial também acrescentar o
bin
caminho do diretório java àPATH
variável de ambiente com:Adicione também
maven-enforce-plugin
para garantir que o JDK correto seja usado. Esta é uma boa prática para o seu pom.Por favor, consulte o plugin Maven Enforcer - Uso .
fonte
Eu sei que é um tópico antigo. Mas eu estava tendo alguns problemas com algo semelhante a isso na fonte do compilador Maven for Java 8. Eu descobri isso com uma solução rápida mencionada neste artigo, pensei que posso colocá-lo aqui e talvez possa ajudar outras pessoas:
fonte
O Maven usa a variável $ JAVACMD como o comando java final, defina-o como o executável java, mudará para outro JDK.
fonte
O Hudson também permite definir vários tempos de execução do Java e chamar o Maven com um deles. Dê uma olhada na página de configuração.
fonte
Se você tiver instalado o Java através
brew
emMac
seguida, as chances são que você vai encontrar o seu inicialAnuário Java aqui:O próximo passo agora seria encontrar para qual
Java Home
diretório o maven está apontando. Para encontrá-lo, digite o comando:mvn -version
Os campos em que estamos interessados aqui são:
Java version
eruntime
.Maven está atualmente apontando para
Java 13
. Além disso, você pode ver o caminho do Java Home sob o tempo de execução da chave, que é:/usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home
Para alterar a versão Java do maven, precisamos adicionar o
Java 8
caminho inicial àJAVA_HOME
variável env.Para fazer isso, precisamos executar o comando:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
no terminal.Agora, se verificarmos a versão maven, podemos ver que ela está apontando para o Java 8 agora.
O problema é que, se você verificar a versão maven novamente no novo terminal, verá que ela está apontando para o Java 13. Para evitar isso, sugiro adicionar a
JAVA_HOME
variável no~/.profile
arquivo.Dessa forma, sempre que seu terminal estiver carregando, ele assumirá o valor que você definiu no JAVA_HOME por padrão. Esta é a linha que você precisa adicionar no
~/.profile
arquivo:export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
Você pode abrir um novo terminal e verificar a versão do Maven, (
mvn -version
) e verá que está apontando para o Java 8 desta vez.fonte
Eu tive problema de compilação com o maven no Eclipse no Windows 7.
Embora eu tenha observado o mvn build estava funcionando muito bem na linha de comando.
O Eclipse estava considerando como JVM padrão uma instalação do JRE em vez do JDK, portanto estava com falha na compilação.
Eu adicionei ao eclipse.ini a seguinte linha:
Além disso, ao iniciar no eclipse, usei na seção "Objetivos" a seguir:
O erro de compilação foi resolvido.
fonte
Para Java 9:
fonte
Outra alternativa para gerenciar várias versões do jdk é o jEnv
Após a instalação, você pode simplesmente alterar a versão java "localmente", ou seja, para um diretório de projeto específico:
Isso também fará com que o mvn use essa versão localmente, quando você ativar o plugin mvn:
fonte
Você também pode definir o JDK for Maven em um arquivo no diretório inicial
~/.mavenrc
:Essa variável de ambiente será verificada pelo script mvn e usada quando presente:
https://github.com/CodeFX-org/mvn-java-9/tree/master/mavenrc
fonte