如何构建EclipseLink 2.7.0

时间:2016-06-12 04:07:30

标签: java maven eclipselink maven-3 tycho

我从这里https://github.com/eclipse/eclipselink.runtime下载了eclipselink。其中有很多子项目。其中一些可以使用maven构建,一些使用蚂蚁,一些使用gradle。

但是,我想要构建的org.eclipse.persistence.core是maven项目。但是当我尝试构建它(父项目)时,我得到了异常:

Scanning for projects...
Computing target platform for MavenProject: org.eclipse.persistence:org.eclipse.persistence.jpa.jpql:2.7.0-SNAPSHOT @ /home/TEMP/eclipselink.runtime-master/jpa/org.eclipse.persistence.jpa.jpql/pom.xml
Fetching p2.index from http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository/ (0B at 0B/s)
Adding repository http://download.eclipse.org/tools/orbit/downloads/drops/R20130827064939/repository
Fetching p2.index from http://download.eclipse.org/releases/luna/ (0B at 0B/s)
Adding repository http://download.eclipse.org/releases/luna
Fetching p2.index from http://download.eclipse.org/releases/luna/201406250900/ (0B at 0B/s)
Fetching p2.index from http://download.eclipse.org/releases/luna/201409261001/ (0B at 0B/s)
Fetching p2.index from http://download.eclipse.org/releases/luna/201501121000/ (0B at 0B/s)
Fetching p2.index from http://download.eclipse.org/releases/luna/201502271000/ (0B at 0B/s)
Resolving dependencies of MavenProject: org.eclipse.persistence:org.eclipse.persistence.jpa.jpql:2.7.0-SNAPSHOT @ /home/TEMP/eclipselink.runtime-master/jpa/org.eclipse.persistence.jpa.jpql/pom.xml
Resolving class path of MavenProject: org.eclipse.persistence:org.eclipse.persistence.jpa.jpql:2.7.0-SNAPSHOT @ /home/TEMP/eclipselink.runtime-master/jpa/org.eclipse.persistence.jpa.jpql/pom.xml
Computing target platform for MavenProject: org.eclipse.persistence:org.eclipse.persistence.core:2.7.0-SNAPSHOT @ /home/TEMP/eclipselink.runtime-master/foundation/org.eclipse.persistence.core/pom.xml
Resolving dependencies of MavenProject: org.eclipse.persistence:org.eclipse.persistence.core:2.7.0-SNAPSHOT @ /home/TEMP/eclipselink.runtime-master/foundation/org.eclipse.persistence.core/pom.xml
{osgi.os=linux, osgi.ws=gtk, org.eclipse.update.install.features=true, osgi.arch=x86_64}
Cannot resolve project dependencies:
  Software being installed: org.eclipse.persistence.core 2.7.0.qualifier
  Missing requirement: org.eclipse.persistence.core 2.7.0.qualifier requires 'bundle org.eclipse.persistence.antlr 3.5.2' but it could not be found

See http://wiki.eclipse.org/Tycho/Dependency_Resolution_Troubleshooting for help.
Cannot resolve dependencies of MavenProject: org.eclipse.persistence:org.eclipse.persistence.core:2.7.0-SNAPSHOT @ /home/TEMP/eclipselink.runtime-master/foundation/org.eclipse.persistence.core/pom.xml: See log for details -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles: 
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException

jar org.eclipse.persistence.antlr 3.5.2已经在我下载的zip中,除了它的来源之外,还可以使用ant构建。
我可以添加这个jar作为依赖,但我不认为这是正确的方法 - 因为这个zip文件中有很多jar。

问题:如何构建它?

3 个答案:

答案 0 :(得分:3)

确实,pom.xml文件具有误导性,这些项目不是Maven项目,或者 - 至少 - 不打算通过maven直接构建。整个构建是一个 ant 构建,由于需要使用Tycho集成,因此使用Maven作为支持工具。

查看antbuild.xml ant构建文件,您会看到它通过Java主类调用Maven(Maven是用Java构建的,入口点毕竟是旧的普通Java主目录):{{1在build-core目标中。

所以工作流程是:

  • 从根文件夹启动ant build,调用org.codehaus.plexus.classworlds.launcher.Launcher
  • 然后,Ant将调用Maven构建为嵌套构建
  • 嵌套Maven构建在多模块/聚合器项目上,后者将构建几个Maven模块(子项目),从位于ant -f antbuild.xml下的根/父Maven pom.xml开始

请注意,您需要:

  • Maven 3 构建它,作为上述父pom文件的buildsystem/org.eclipse.persistence.parent
  • prerequisites env变量集,指向您的maven安装文件夹
  • 使用Ant 1.9 +

但是,作为最小设置的一部分,默认构建将无法正常(成功)运行,因为M2_HOME缺少库,正如下面junit语句所指定的那样:

echo

因此,最小调用将是:

[echo] junit.lib = '${junit.lib}' (if not set tests may not compile; let alone run)

例如,您可以直接指向您的maven存储库,如下所示(这对我有用):

ant -f antbuild.xml -Djunit.lib=<path_to_junit_jar>

或者,您可以在antbuild.properties文件中指定路径here

ant -f antbuild.xml -DC:\data\m2\repository\junit\junit\4.12\junit-4.12.jar

# The directory that holds the oracle-specific jar files. # You can either put the jars in this directory, or specify your own directory. junit.lib=../extension.lib.external/junit.jar 也应该这样做,否则会导致一些编译错误,但不会影响成功构建。

可以在antbuild.properties模块的eclipse.moxy.test文件here中设置jmockit属性:

jmockit.jar

或者,再次,通过命令行按照以下示例:

#JMockit   
jmockit.jar=jmockit-1.10.jar

上面的命令给了我一个成功的构建,根本没有编译错误。只有关于使用已弃用或内部API的警告。

答案 1 :(得分:2)

您可以使用this guide构建EclipseLink。

某些元素可能已过时,但您应该没有问题。

答案 2 :(得分:0)

我在一个项目中遇到了同样类型的问题。有一个父项目。还有另一个项目。但他们互相依赖。我需要做的是让它可以运行。

您必须首先确定需要构建哪一个。接下来,然后是下一个。如果您没有文档,那么识别就很困难且耗时。

另一件事:

运行EclipseLink 2.7.0的最低要求是Java 8。请确保您已安装Java 8并且它正在运行。