我从这里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。
问题:如何构建它?
答案 0 :(得分:3)
确实,pom.xml
文件具有误导性,这些项目不是Maven项目,或者 - 至少 - 不打算通过maven直接构建。整个构建是一个 ant 构建,由于需要使用Tycho集成,因此使用Maven作为支持工具。
查看antbuild.xml
ant构建文件,您会看到它通过Java主类调用Maven(Maven是用Java构建的,入口点毕竟是旧的普通Java主目录):{{1在build-core
目标中。
所以工作流程是:
org.codehaus.plexus.classworlds.launcher.Launcher
ant -f antbuild.xml
下的根/父Maven pom.xml
开始请注意,您需要:
buildsystem/org.eclipse.persistence.parent
。prerequisites
env变量集,指向您的maven安装文件夹但是,作为最小设置的一部分,默认构建将无法正常(成功)运行,因为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
并且它正在运行。