如何在eclipse中使用指定的java home属性构建Maven项目?

时间:2015-01-29 07:43:53

标签: java eclipse maven

我想用给定的java home属性构建maven集成项目。我想在java中编写一个代码来设置InvocationRequest对象的java home属性。主要目标是使用java home(由算法)给出运行时来构建项目。所以我会调用getInvoker().execute(request);来执行maven目标,其中request是InvocationRequest对象。

我尝试将请求java.home属性设置为
properties.setProperty(Goals.JAVA_HOME, javaHomePath);并调用方法executeGoals(pom, new String[] { Goals.INSTALL, Goals.CLEAN }, properties);
这个executeGoals(...)方法也包含getInvoker()。执行(请求)调用和请求对象定义。

输出为:Missing: 1) com.sun:tools:jar:1.5.0 #Solved

编辑:解决了输出问题,但出现了一个新问题: class file has wrong version 50.0, should be 49.0。也许我改变了jre home,所以我认为我正在使用比我运行的更新版本的java编译。

提醒:我想用指定的java home属性构建=我想将编译器java home(或version)更改为指定的一个。 (在日食中)
我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不认为它是可配置的。它是使用JAVA_HOME环境变量的Maven Core的一部分。请参阅接受的答案: How to set specific java version to Maven

此外,无法在Java进程中设置或更改环境变量(不是系统属性)(对于当前进程)。如果从Java进程中创建另一个进程,则会methods为此子进程指定环境变量。

也许解决方案是执行Maven命令,例如" mvn clean install"将特定的JAVA_HOME变量设置为子进程(这需要安装Maven并且mvn可用作命令)。使用ProcessBuilder切换到目标项目的pom.xml所在的工作目录,并在开始该过程之前设置适当的environment variable(s)

如果不应在运行应用程序的环境中安装Maven,您还可以在应用程序中分发Maven安装(可能在单独的目录中)。然后你可以对这个发行版的mvn.bat或mvn.sh运行(取决于操作系统)。