`
bsr1983
  • 浏览: 1124131 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习Hibernate源码一_下载hibernate源码并编译为eclipse项目

 
阅读更多

学习Hibernate源码一

1.下载hibernate源码,并构建起eclipse项目

1hibernate的源代码采用git管理,安装git客户端以后,通过点击https://github.com/hibernate/hibernate-orm页面右侧的“Clone in Desktop”可启动客户端将代码clone到本地。当然也可以直接使用

git clone git://github.com/hibernate/hibernate-orm.git

命令下载代码。

下载完毕后,打开根目录下的readme文件,可以看到详细的把源代码构建为不同IDE项目的说明;以及其他的一些信息。

对应文档的网站链接:

https://community.jboss.org/wiki/BuildingHibernateORM4x5x

构建IDE部分:

Eclipse

To create the Eclipse project files you can run

./gradlew eclipse

After changes to the dependencies you need to clean the project files and recreate them:

./gradlew cleanEclipse eclipse

 

See also  Contributing to Hibernate using Eclipse

Idea

To create the Idea project files you can run

./gradlew idea

After changes to the dependencies you need to clean the project files and recreate them:

./gradlew cleanIdea idea

此处的gradlehibernate所使用的自动构建工具,官网地址为:

http://www.gradle.org/

下载地址为:http://www.gradle.org/downloads,选择一个版本进行下载

此处是Hibernate团队阐述其从Maven迁移到Gradle的原因:https://community.jboss.org/wiki/GradleWhy

至于grable,有时间会深入学习一下,感兴趣的同学可以看看这位博主的博客:

http://www.blogjava.net/wldandan/archive/2012/06/26/381532.html

言归正传,下载grable后,解压,我将其解压到了C盘根目录,解压完毕的grable所在目录为:C:\gradle-1.7,将其子目录C:\gradle-1.7\bin目录加入系统的Path变量

编译代码为eclipse项目:

1)进入hibernate源码的根目录:

cd C:\Users\Administrator\Documents\GitHub\hibernate-orm

2)执行gradlew.bat eclipse

接着会自动下载项目所需要的依赖项,具体输出如下:

C:\Users\Administrator\Documents\GitHub\hibernate-orm>gradlew.bat eclipse

Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on

Deprecated dynamic property: "exportPackageVersion" on "project ':documentation'", value: "4.3.0".

Deprecated dynamic property "exportPackageVersion" created in multiple locations.

FAILURE: Build failed with an exception.

* Where:

Build file 'C:\Users\Administrator\Documents\GitHub\hibernate-orm\build.gradle' line: 85

* What went wrong:

A problem occurred evaluating root project 'hibernate-orm'.

> org/hibernate/build/gradle/publish/auth/maven/AuthenticationManager : Unsupported major.minor version 51.0

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

此时我去查看我的环境变量,JAVA_HOME指向的是64位的JDK6,将其指向32JDK7后再次执行

gradlew.bat eclipse

发现此时gradlew又去下载了其他的依赖包,查看hibernate-rom目录下的libraries.gradle文件,可以看到hibernate的依赖包。

重新编译过程中还是报错了,具体错误:

:hibernate-core:compileJava

警告: [options] 未与 -source 1.6 一起设置引导类路径

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\Loader.java:38: 错误: 编码GBK的不可映射字符

 * @author L锟絪zl?Benke

                 ^

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\ResultCheckStyle.java:29: 错误: 编码GBK的不可映射字符

 * @author L锟絪zl?Benke

                 ^

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLDelete.java:37: 错误: 编码GBK的不可映射字符

 * @author L锟絪zl?Benke

                 ^

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLDeleteAll.java:37: 错误: 编码GBK的不可映射字符

 * @author L锟絪zl?Benke

                 ^

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLInsert.java:37: 错误: 编码GBK的不可映射字符

 * @author L锟絪zl?Benke

                 ^

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-core\src\main\java\org\hibernate\annotations\SQLUpdate.java:37: 错误: 编码GBK的不可映射字符

 * @author L锟絪zl?Benke

                 ^

: 某些输入文件使用或覆盖了已过时的 API

: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

: 某些输入文件使用了未经检查或不安全的操作。

: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

1 个警告

google了一下,貌似是区域语言设置的问题,需要修改为“英语(英国)”,但编译并没用中断,接着编译。我将控制面板中的区域语言设置修改后,继续观察,看其是否还会报同样的错误。

最终还是失败了:

:hibernate-entitymanager:compileJava

警告: [options] 未与 -source 1.6 一起设置引导类路径

C:\Users\Administrator\Documents\GitHub\hibernate-orm\hibernate-entitymanager\src\main\java\org\hibernate\jpa\AvailableSettings.java:290: 错误: 编码GBK的不可映射字符

         * contains 鈥淐REATE SCHEMA?commands.  If this property is not supplied (or is explicitly {@code false}), the

                                   ^

: 某些输入文件使用或覆盖了已过时的 API

: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

: 某些输入文件使用了未经检查或不安全的操作。

: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

1 个警告

:hibernate-entitymanager:processResources

:hibernate-entitymanager:classes

:hibernate-testing:generateMainLoggingClasses

Download http://repo1.maven.org/maven2/com/experlog/xapool/1.5.0/xapool-1.5.0.jar

Download http://repo1.maven.org/maven2/org/jboss/jbossts/jbossjta/4.16.4.Final/jbossjta-4.16.4.Final.jar

:hibernate-testing:compileJava

警告: [options] 未与 -source 1.6 一起设置引导类路径

: 某些输入文件使用或覆盖了已过时的 API

: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

: 某些输入文件使用了未经检查或不安全的操作。

: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

1 个警告

:hibernate-testing:processResources UP-TO-DATE

:hibernate-testing:classes

:hibernate-testing:jar

:hibernate-entitymanager:generateTestJpaMetamodelClasses

此处略去部分download信息

Download http://repo1.maven.org/maven2/org/jboss/shrinkwrap/shrinkwrap-build/1.0.0-alpha-11/shrinkwrap-build-1.0.0-alpha-11.pom

 

FAILURE: Build failed with an exception.

 

* What went wrong:

Could not resolve all dependencies for configuration ':hibernate-entitymanager:testCompile'.

> Could not resolve org.jboss.arquillian:arquillian-api:1.0.0.Alpha4.

  Required by:

      org.hibernate:hibernate-entitymanager:4.3.0-SNAPSHOT > org.jboss.weld.arquillian.container:arquillian-weld-ee-embedded-1.1:1.1.2.Final > org.jboss.arquillian:arquillian-spi:1.0.0.Alpha4

   > Could not GET 'http://repository.jboss.org/nexus/content/groups/public/org/jboss/arquillian/arquillian-api/1.0.0.Alpha4/arquillian-api-1.0.0.Alpha4.pom'.

      > The target server failed to respond

 

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 20 mins 17.755 secs

猜测还是和区域和语言有关,因为之前已经在控制面板修改过,重新进入hibernate-rom根目录执行gradlew.bat eclipse再次尝试编译。

又是一堆download信息后,编译开始,盯着编译的命令窗口的输出,关注其是否还会因为编码报错。

:hibernate-osgi:eclipseJdt

:hibernate-osgi:eclipseProject

:hibernate-osgi:eclipse

:hibernate-proxool:generateMainLoggingClasses

Download http://repo1.maven.org/maven2/proxool/proxool/0.8.3/proxool-0.8.3.pom

Download http://repo1.maven.org/maven2/proxool/proxool/0.8.3/proxool-0.8.3.jar

:hibernate-proxool:generateSources

:hibernate-proxool:eclipseClasspath

:hibernate-proxool:eclipseJdt

:hibernate-proxool:eclipseProject

:hibernate-proxool:eclipse

:hibernate-testing:generateSources UP-TO-DATE

:hibernate-testing:eclipseClasspath

Download http://repo1.maven.org/maven2/org/jboss/jbossts/jbossjta/4.16.4.Final/jbossjta-4.16.4.Final-sources.jar

Download http://repo1.maven.org/maven2/com/experlog/xapool/1.5.0/xapool-1.5.0-sources.jar

:hibernate-testing:eclipseJdt

:hibernate-testing:eclipseProject

:hibernate-testing:eclipse

:release:eclipseProject

:release:eclipse

 

BUILD SUCCESSFUL

 

Total time: 9 mins 13.742 secs

最终,编译成功了。

总结:

1)编译需要使用JDK7,估计Hibernate中使用了JDK7的新特性,应该是关于try-rource的使用会比较多,接下来需要从源代码中找一下证据。

2)需要将区域和语言修改为“英语(英国)”。

3)编译时需要联网下载依赖项,因此网速会影响最终的编译时间。

编译完毕后导入项目到eclipse之前,先修改一下JAVA_HOME,需要和你的eclipse的版本一致,否则eclipse无法正常启动。

由于项目较多,导入的过程也会比较缓慢。需要耐心等待,如果想尝试修改hibernate源码并编译查看效果的话,导入时建议勾选copy projects into workspace,将源码拷到你指定的工作空间。

 

 

0
2
分享到:
评论

相关推荐

    hibernate tools源码运行或修改需要的jar

    Hibernate Tools 是一个强大的开发工具,它为Hibernate ORM框架提供了丰富的集成开发环境支持,包括逆向工程(从数据库生成实体类)、代码生成、JPA支持以及HQL和SQL查询的调试等。要运行或修改Hibernate Tools的...

    spring 源码 通过gradle编译 直接导入 eclipse

    Spring框架是Java开发中不可或缺的一部分,...总的来说,这个资源为学习和研究Spring源码提供了一条捷径,通过Gradle编译和Eclipse的集成,开发者可以更便捷地进行源码级别的学习,加深对Spring的理解,提升自身技能。

    精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(第二版)

    【精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(第二版)】这一资源涵盖了Java企业级开发中的关键技术和实践,是学习和深入理解Java EE应用开发的宝贵资料。本资源以Eclipse作为集成开发环境,...

    编译后的spring源码,可直接导入eclipse

    本压缩包提供的“编译后的spring源码”是学习和理解Spring工作原理的宝贵资源,对于Java开发者,尤其是希望深入Spring内部机制的人来说,这是一个不可多得的学习资料。 首先,导入Eclipse是开发Java项目的标准步骤...

    编译好的Spring的eclipse工程!Spring源码

    Spring框架是Java开发中广泛应用的一个...这个编译好的Spring 4.3.0源码工程为开发者提供了一个学习和研究的平台,通过对源码的阅读,我们可以深入了解Spring的工作机制,从而更好地利用它来构建高质量的企业级应用。

    JAVAweb客户管理系统源码eclipse版.rar

    JavaWeb客户管理系统是一款基于Eclipse开发的Web应用,主要利用了Spring、Struts2和Hibernate(SSH)三大框架,构建了MVC模式的项目结构。这个项目是为新手学习和二次开发设计的,使用JDK1.7版本,确保了在较旧的...

    Eclipse开发入门与项目实践 源代码

    本资源"**Eclipse开发入门与项目实践 源代码**"提供了丰富的学习材料,帮助初学者快速掌握Eclipse的使用技巧并进行实际项目的开发实践。 首先,Eclipse作为一个强大的开发工具,其主要特点包括: 1. **插件扩展性*...

    深入浅出Hibernate源码

    4,将下载的hibernate包解压到x:\rs\hib-samples\hibernate-2.1与x:\rs\hib-samples\hibernate-3,目录结构应该为: x: + rs + hib-samples 本文件包解压的目录 + forum-step1-db-first-middlegen + forum-step1...

    从零开始学Eclipse(光盘源码)

    Eclipse是一款广泛应用于Java开发的集成开发环境(IDE),它以其强大的功能、高度的可扩展...这份"从零开始学Eclipse(光盘源码)"的资料,将为我们提供丰富的实例和练习,帮助初学者快速上手,深入理解Eclipse的使用。

    Spring3.2和Hibernate3.6整合源码和jar包

    在提供的压缩包文件中,`.classpath`和`.project`是Eclipse项目的配置文件,它们包含了项目所需的库和构建设置。`readme.txt`可能包含了项目介绍或使用说明。`bin`目录通常包含编译后的Java类文件,而`test`和`src`...

    SpringFramework3.2 源码 github源码gradle编译

    不过,作者已经完成了下载和Gradle编译的过程,使得其他对Spring源码感兴趣的开发者可以直接导入Eclipse进行学习和分析。 Spring Framework 3.2的源码分析可以从以下几个方面入手: 1. **IoC容器**:这是Spring的...

    spring3.2.x源码 for Eclipse

    通过深入学习和研究Spring 3.2.x的源码,开发者可以更好地掌握这个强大框架的工作机制,从而在实际项目中更高效、更灵活地应用Spring。此外,源码分析还能帮助开发者解决遇到的问题,提高代码质量,提升开发效率。

    SSH(Struts2+Spring4+Hibernate5)整合Demo源码实例下载

    这个源码实例是一个基于Eclipse的Java Web项目,它演示了如何将这三个框架有效地整合在一起。下面我们将深入探讨SSH框架的核心概念以及它们在实际开发中的应用。 **Struts2** 是一个MVC(Model-View-Controller)...

    spring-framework-源码已编译-可直接导入eclipse

    本资源“spring-framework-源码已编译-可直接导入eclipse”是一个包含 Spring 框架源码的压缩包,经过编译后可以直接在 Eclipse IDE 中进行学习和分析。以下是对 Spring 框架源码的一些关键知识点的详细说明: 1. *...

    spring源码(编译好了,可以直接导入eclipse)

    标题提到的"spring源码(编译好了,可以直接导入eclipse)"表明这个压缩包包含的是已经编译完成的Spring框架源代码,可以直接在Eclipse集成开发环境中使用,便于学习和调试。 首先,Spring框架的核心组成部分包括...

    eclipse与Hibernate整合相关资源

    3. 创建新项目:新建一个Java项目,并设置项目的JRE为JDK 1.8。 4. 引入Hibernate库:将适配JDK 1.8的Hibernate jar包导入到项目的类路径中,包括hibernate-core、hibernate-entitymanager等核心库。 5. 配置...

    简单的博客系统源码(Struts+Hibernate)

    总的来说,这个“简单的博客系统源码”项目是一个很好的学习资源,它可以帮助开发者了解如何结合Struts和Hibernate实现一个简单的Web应用,同时涵盖了数据库设计、MVC架构和ORM实践等多个重要知识点。对于初学者来说...

    spring源码可导入eclipse版本 第二部分

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、易用性和灵活性著称。Spring 4.3.18是该框架的一个稳定版本,提供了...这个压缩包为开发者提供了一个便捷的起点,无需繁琐的编译步骤,即可直接开始学习之旅。

    eclipse从入门到精通源码eclipse从入门到精通源码

    总之,"eclipse从入门到精通源码"的学习涵盖了Eclipse的基础使用、进阶技巧、源码分析和项目实践,通过这个资源,你可以逐步成长为一个熟练的Eclipse开发者,无论是在日常开发还是在复杂的项目环境中都能游刃有余。

    在线购物Eclipse+Struts+Hibernate

    《在线购物Eclipse+Struts+Hibernate》是一个关于使用Eclipse集成开发环境,结合Struts和Hibernate框架构建购物车应用的教程。这个项目旨在帮助Java开发者深入理解和实践这些技术,以便于开发出功能完备的电子商务...

Global site tag (gtag.js) - Google Analytics