文档章节

spring源码如何导入到eclipse

sjzmlb
 sjzmlb
发布于 2015/10/21 00:12
字数 4325
阅读 526
收藏 1
点赞 0
评论 0

官方说明:

https://github.com/spring-projects/spring-framework

先讲基本步骤,如下:

  1. 去GitHub中下载spring framework的源码,https://github.com/spring-projects/spring-framework/releases
  2. 下载3.2.X其中的一个版本; 
  3. 安装Gradle软件,官网下载,解压即可,设置GRADLE_HOME,和PATH。
  4. 命令行中运行gradle -v,检查一下是否正确安装配置;
  5. 命令行中运行spring framework根目录下的import-into-eclipse.bat
  6. 连续两次回车,就可以开始自动构建;
  7. 中间出现停止不前的情况里,按ctrl+c终止,再运行就可以进行下去;
  8. 过程需要花些时间(几个小时都有可能),视下载各种依赖jar包和dom文件的速度而定;
  9. 在Eclipse菜单File->import选择General下面的Exsiting projects into workspace,这样就导入完成了。

如果你按上述步骤能一次成功的话,那不仅是你运气,而且RP极高。反正我没有,而且还折腾了好多次才成功能。

 也可以尝试

进入spring目录, 执行命令: gradle eclipse -x :eclipse

第一次执行会花比较长的时间,gradle会去下载许多依赖库。

问题有以下几个:

 问题一:spring-framework-4.0.0.M3要用jdk1.8

如果你习愦于什么都下最新版的,那么你肯定想都没想就下了spring-framework-4.0.0.M3,而且又那么不好采,正好没看README,那么问题马上就来了,直接报"-XX:MaxMetaspaceSize=1024m"及"could not create the java Virtual machine"的错误。

查看build.gradle和gradlew.bat中,可以找出原因:

build.gradle中:

Java代码   收藏代码
  1. compileJava {  
  2.         sourceCompatibility=1.6  
  3.         targetCompatibility=1.6  
  4.     }  
  5.     compileTestJava {  
  6.         sourceCompatibility=1.8  
  7.         targetCompatibility=1.8  
  8.     }  

 可以看出这个版本的test代码要求用1.8。

gradlew.bat中

Java代码   收藏代码
  1. set GRADLE_OPTS=-XX:MaxMetaspaceSize=1024m -Xmx1024m -XX:MaxHeapSize=256m %GRADLE_OPTS%  

 其中-XX:MaxMetaspaceSize是1.8的写法。

所以如果下载的是4.0的版本,最好把jdk也升级到1.8,要不就下载一下3.2.x的版本就好了。

 

  • 问题2:在build过程中,出现heap内存溢出情况

错误信息如下:

Java代码   收藏代码
  1. FAILURE: Build failed with an exception.  
  2.   
  3. * What went wrong:  
  4. Execution failed for task ':referencePdf'.  
  5. > GC overhead limit exceeded  
  6.   
  7. * Try:  
  8. Run with --info or --debug option to get more log output.  
  9.   
  10. * Exception is:  
  11. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':referen  
  12. cePdf'.  
  13.         at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.ex  
  14. ecuteActions(ExecuteActionsTaskExecuter.java:68)  
  15.         at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.ex  
  16. ecute(ExecuteActionsTaskExecuter.java:46)  
  17.         at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExec  
  18. uter.execute(PostExecutionAnalysisTaskExecuter.java:34)  
  19.         at org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter  
  20. $1.run(CacheLockHandlingTaskExecuter.java:34)  
  21.         at org.gradle.internal.Factories$1.create(Factories.java:22)  
  22.         at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(Def  
  23. aultCacheAccess.java:179)  
  24.         at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(Def  
  25. aultCacheAccess.java:232)  
  26.         at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunning  
  27. Operation(DefaultPersistentDirectoryStore.java:138)  
  28.         at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCache  
  29. Access.longRunningOperation(DefaultTaskArtifactStateCacheAccess.java:83)  
  30.         at org.gradle.api.internal.changedetection.CacheLockHandlingTaskExecuter  
  31. .execute(CacheLockHandlingTaskExecuter.java:32)  
  32.         at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.exec  
  33. ute(SkipUpToDateTaskExecuter.java:55)  
  34.         at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execut  
  35. e(ValidatingTaskExecuter.java:57)  
  36.         at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecu  
  37. ter.execute(SkipEmptySourceFilesTaskExecuter.java:41)  
  38.         at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter  
  39. .execute(SkipTaskWithNoActionsExecuter.java:51)  
  40.         at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execut  
  41. e(SkipOnlyIfTaskExecuter.java:52)  
  42.         at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter  
  43. .execute(ExecuteAtMostOnceTaskExecuter.java:42)  
  44.         at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailur  
  45. e(AbstractTask.java:247)  
  46.         at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.executeTask(De  
  47. faultTaskPlanExecutor.java:52)  
  48.         at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.processTask(De  
  49. faultTaskPlanExecutor.java:38)  
  50.         at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(Defaul  
  51. tTaskPlanExecutor.java:30)  
  52.         at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(Defau  
  53. ltTaskGraphExecuter.java:83)  
  54.         at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTask  
  55. ExecutionAction.java:29)  
  56.         at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute  
  57. r.java:61)  
  58.         at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExec  
  59. uter.java:23)  
  60.         at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecu  
  61. ter.java:67)  
  62.         at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExe  
  63. cuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31)  
  64.         at org.gradle.internal.Factories$1.create(Factories.java:22)  
  65.         at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAcc  
  66. ess.java:124)  
  67.         at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAcc  
  68. ess.java:112)  
  69.         at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(De  
  70. faultPersistentDirectoryStore.java:130)  
  71.         at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateCache  
  72. Access.useCache(DefaultTaskArtifactStateCacheAccess.java:79)  
  73.         at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExe  
  74. cuter.execute(TaskCacheLockHandlingBuildExecuter.java:29)  
  75.         at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute  
  76. r.java:61)  
  77.         at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExec  
  78. uter.java:23)  
  79.         at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecu  
  80. ter.java:67)  
  81.         at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildEx  
  82. ecutionAction.java:32)  
  83.         at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute  
  84. r.java:61)  
  85.         at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecute  
  86. r.java:54)  
  87.         at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default  
  88. GradleLauncher.java:158)  
  89.         at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradle  
  90. Launcher.java:113)  
  91.         at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLaun  
  92. cher.java:81)  
  93.         at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.jav  
  94. a:38)  
  95.         at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execut  
  96. e(InProcessGradleLauncherActionExecuter.java:39)  
  97.         at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execut  
  98. e(InProcessGradleLauncherActionExecuter.java:25)  
  99.         at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)  
  100.         at org.gradle.api.internal.Actions$RunnableActionAdapter.execute(Actions  
  101. .java:137)  
  102.         at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.  
  103. execute(CommandLineActionFactory.java:201)  
  104.         at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.  
  105. execute(CommandLineActionFactory.java:174)  
  106.         at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(  
  107. CommandLineActionFactory.java:170)  
  108.         at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(  
  109. CommandLineActionFactory.java:139)  
  110.         at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep  
  111. ortingAction.java:33)  
  112.         at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionRep  
  113. ortingAction.java:22)  
  114.         at org.gradle.launcher.Main.doAction(Main.java:48)  
  115.         at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)  
  116.         at org.gradle.launcher.Main.main(Main.java:39)  
  117.         at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBoots  
  118. trap.java:50)  
  119.         at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.j  
  120. ava:32)  
  121.         at org.gradle.launcher.GradleMain.main(GradleMain.java:26)  
  122.         at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.ja  
  123. va:33)  
  124.         at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:130)  
  125.         at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:48)  
  126. Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded  
  127.         at org.apache.fop.area.inline.TextArea.addWord(TextArea.java:68)  
  128.         at org.apache.fop.layoutmgr.inline.TextLayoutManager.createTextArea(Text  
  129. LayoutManager.java:483)  
  130.         at org.apache.fop.layoutmgr.inline.TextLayoutManager.addAreas(TextLayout  
  131. Manager.java:361)  
  132.         at org.apache.fop.layoutmgr.inline.LineLayoutManager.addInlineArea(LineL  
  133. ayoutManager.java:1716)  
  134.         at org.apache.fop.layoutmgr.inline.LineLayoutManager.addAreas(LineLayout  
  135. Manager.java:1568)  
  136.         at org.apache.fop.layoutmgr.BlockLayoutManager.addAreas(BlockLayoutManag  
  137. er.java:395)  
  138.         at org.apache.fop.layoutmgr.BlockLayoutManager.addAreas(BlockLayoutManag  
  139. er.java:395)  
  140.         at org.apache.fop.layoutmgr.BlockLayoutManager.addAreas(BlockLayoutManag  
  141. er.java:395)  
  142.         at org.apache.fop.layoutmgr.BlockLayoutManager.addAreas(BlockLayoutManag  
  143. er.java:395)  
  144.         at org.apache.fop.layoutmgr.AreaAdditionUtil.addAreas(AreaAdditionUtil.j  
  145. ava:121)  
  146.         at org.apache.fop.layoutmgr.FlowLayoutManager.addAreas(FlowLayoutManager  
  147. .java:305)  
  148.         at org.apache.fop.layoutmgr.PageBreaker.addAreas(PageBreaker.java:241)  
  149.         at org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.jav  
  150. a:508)  
  151.         at org.apache.fop.layoutmgr.AbstractBreaker.addAreas(AbstractBreaker.jav  
  152. a:371)  
  153.         at org.apache.fop.layoutmgr.PageBreaker.doPhase3(PageBreaker.java:262)  
  154.         at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.jav  
  155. a:346)  
  156.         at org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.jav  
  157. a:264)  
  158.         at org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(Pag  
  159. eSequenceLayoutManager.java:106)  
  160.         at org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.j  
  161. ava:234)  
  162.         at org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java  
  163. :123)  
  164.         at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilde  
  165. r.java:340)  
  166.         at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:169)  
  167.         at org.apache.xalan.transformer.TransformerIdentityImpl.endElement(Trans  
  168. formerIdentityImpl.java:1050)  
  169.         at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source  
  170. )  
  171.         at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknow  
  172. n Source)  
  173.         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContent  
  174. Dispatcher.dispatch(Unknown Source)  
  175.         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Un  
  176. known Source)  
  177.         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)  
  178.         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)  
  179.         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)  
  180.         at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)  
  181.         at org.apache.xalan.transformer.TransformerIdentityImpl.transform(Transf  
  182. ormerIdentityImpl.java:432)  
  183.   
  184.   
  185. BUILD FAILED  

 

那就把gradlew.bat的内存设置调大一点,我做实验时,机器的内存是8G、64位系统,直接使用

set GRADLE_OPTS=-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=1024m %GRADLE_OPTS%

(我下载的是spring-framework-3.2.1.RELEASE版本,jdk1.7)

 

  • 问题3:gradle命令的使用

在spring源码的根目录下,提供gradlew.bat和

import-into-eclipse.bat这两个命令,都可以build源码,但如果使用前者就不会生成eclipse的环境需要的一些文件,如下图所示:

 

另外,在使用import-into-eclipse.bat这个命令build时,可能会遇到一个问题,错误日志如下:

 

Java代码   收藏代码
  1. FAILURE: Build failed with an exception.  
  2.   
  3. * What went wrong:  
  4. Execution failed for task ':spring-webmvc-tiles3:eclipseClasspath'.  
  5. > Could not resolve all dependencies for configuration 'detachedConfiguration2'.  
  6.   
  7.    > Module version group:org.springframework, module:spring-webmvc-tiles3, vers  
  8. ion:3.2.1.RELEASE, configuration:detachedConfiguration2 declares a dependency on  
  9.  configuration 'runtimeMerge' which is not declared in the module descriptor for  
  10.  group:org.springframework, module:spring-web, version:3.2.1.RELEASE  
  11.   
  12. * Try:  
  13. Run with --stacktrace option to get the stack trace. Run with --info or --debug  
  14. option to get more log output.  

 从日志中可以看出是在build spring-webmvc-tiles3项目时,生成eclipse的.classpath文件时出错,打开其它正常导入的项目的.classpath看下这个文件包含了哪些信息,如打开spring-aop项目的:

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <classpath>  
  3.     <classpathentry kind="output" path="spring-aop/bin/eclipse"/>  
  4.     <classpathentry output="bin/main" kind="src" path="src/main/java"/>  
  5.     <classpathentry output="bin/main" kind="src" path="src/main/resources"/>  
  6.     <classpathentry output="bin/test" kind="src" path="src/test/java"/>  
  7.     <classpathentry output="bin/test" kind="src" path="src/test/resources"/>  
  8.     <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>  
  9.     <classpathentry kind="src" path="/spring-core" exported="true"/>  
  10.     <classpathentry kind="src" path="/spring-beans" exported="true"/>  
  11.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/aopalliance/aopalliance/1.0/source/4a4b6d692e17846a9f3da036438a7ac491d3c814/aopalliance-1.0-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/aopalliance/aopalliance/1.0/jar/235ba8b489512805ac13a8f9ea77a1ca5ebe3e8/aopalliance-1.0.jar" exported="true"/>  
  12.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/com.jamonapi/jamon/2.4/jar/e2ad6f45c2ba72d8fa798b68a5f9b73c9f047756/jamon-2.4.jar"/>  
  13.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-pool/commons-pool/1.5.3/source/7c4d461b6574f056e1d4fc6daa16821382b53bef/commons-pool-1.5.3-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-pool/commons-pool/1.5.3/jar/7ad440d63c6eea5e79f1737e264810c76258d042/commons-pool-1.5.3.jar"/>  
  14.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.aspectj/aspectjweaver/1.7.1/source/5bfa1ea3b5653119dcf22a0d675302e0e5a802b1/aspectjweaver-1.7.1-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.aspectj/aspectjweaver/1.7.1/jar/cf8f3ca56739d3bf8a539362e48f180a31f83433/aspectjweaver-1.7.1.jar"/>  
  15.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/junit/junit/4.11/source/28e0ad201304e4a4abf999ca0570b7cffc352c3c/junit-4.11-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar"/>  
  16.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.hamcrest/hamcrest-all/1.3/source/47e033b7ab18c5dbd5fe29fc1bd5a40afe028818/hamcrest-all-1.3-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.hamcrest/hamcrest-all/1.3/jar/63a21ebc981131004ad02e0434e799fd7f3a8d5a/hamcrest-all-1.3.jar"/>  
  17.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.mockito/mockito-core/1.9.5/source/46f703fb4266140c544d48a189cb25947eb6333e/mockito-core-1.9.5-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.mockito/mockito-core/1.9.5/jar/c3264abeea62c4d2f367e21484fbb40c7e256393/mockito-core-1.9.5.jar"/>  
  18.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.hamcrest/hamcrest-core/1.3/source/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.hamcrest/hamcrest-core/1.3/jar/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar"/>  
  19.     <classpathentry sourcepath="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.objenesis/objenesis/1.0/source/b10c90e57b7bb985a7b6a704769428fe5c2a732c/objenesis-1.0-sources.jar" kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.objenesis/objenesis/1.0/jar/9b473564e792c2bdf1449da1f0b1b5bff9805704/objenesis-1.0.jar"/>  
  20.     <classpathentry kind="lib" path="D:/DevelopTools/spring-framework-3.2.1.RELEASE/spring-core/build/libs/spring-cglib-repack-3.0.jar" exported="true"/>  
  21. </classpath>  

 而spring-webmvc-tiles3下根本就没有.classpath的影子,没得比较,虽然上面的错误日志的E文都认识,但还是看不出它在讲什么,不过大体能看得出是依赖出了问题,那只能是想办法顺藤摸瓜了。重新打开build.gradle,找到有关spring-webmvc-tiles3项目的描述,如下:

Java代码   收藏代码
  1. project("spring-webmvc-tiles3") {  
  2.     description = "Spring Framework Tiles3 Integration"  
  3.     merge.into = project(":spring-webmvc")  
  4.     dependencies {  
  5.         provided(project(":spring-context"))  
  6.         provided(project(":spring-web"))  
  7.         provided("javax.el:el-api:1.0")  
  8.         provided("javax.servlet:jstl:1.2")  
  9.         provided("javax.servlet.jsp:jsp-api:2.1")  
  10.         optional("org.apache.tiles:tiles-request-api:1.0.1")  
  11.         optional("org.apache.tiles:tiles-api:3.0.1")  
  12.         optional("org.apache.tiles:tiles-core:3.0.1") {  
  13.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  14.         }  
  15.         optional("org.apache.tiles:tiles-servlet:3.0.1") {  
  16.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  17.         }  
  18.         optional("org.apache.tiles:tiles-jsp:3.0.1") {  
  19.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  20.         }  
  21.         optional("org.apache.tiles:tiles-extras:3.0.1") {  
  22.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  23.         }  
  24.         optional("org.apache.tiles:tiles-el:3.0.1") {  
  25.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  26.         }  
  27.         provided("javax.servlet:javax.servlet-api:3.0.1")  
  28.         testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")  
  29.     }  
  30. }  

 打开C:/Users/so/.gradle/caches/artifacts-15/filestore,挨个依赖进行检查,jar包倒是最下载下来了,但是"org.apache.tiles:tiles-jsp:3.0.1"、"org.apache.tiles:tiles-extras:3.0.1"、"org.apache.tiles:tiles-el:3.0.1"三个却没有下载到source,其它包都有jar、pom、source三个目录,这三个没有source目录,只有jar、pom目录,问题应该是出现在这里。

 

后来终于让我找到了这么一个东西:http://issues.gradle.org/browse/GRADLE-1157,正好证实我前面的猜想,所以按照issue中的解决办法,在build.gradle中加上如下部分:

Java代码   收藏代码
  1. eclipseClasspath {  
  2.             downloadSources = false// required for eclipseClasspath to work  
  3. }  

 关于spring-webmvc-tiles3项目的脚本、就变成这样了:

Java代码   收藏代码
  1. project("spring-webmvc-tiles3") {  
  2.     description = "Spring Framework Tiles3 Integration"  
  3.     merge.into = project(":spring-webmvc")  
  4.     dependencies {  
  5.         provided(project(":spring-context"))  
  6.         provided(project(":spring-web"))  
  7.         provided("javax.el:el-api:1.0")  
  8.         provided("javax.servlet:jstl:1.2")  
  9.         provided("javax.servlet.jsp:jsp-api:2.1")  
  10.         optional("org.apache.tiles:tiles-request-api:1.0.1")  
  11.         optional("org.apache.tiles:tiles-api:3.0.1")  
  12.         optional("org.apache.tiles:tiles-core:3.0.1") {  
  13.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  14.         }  
  15.         optional("org.apache.tiles:tiles-servlet:3.0.1") {  
  16.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  17.         }  
  18.         optional("org.apache.tiles:tiles-jsp:3.0.1") {  
  19.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  20.         }  
  21.         optional("org.apache.tiles:tiles-extras:3.0.1") {  
  22.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  23.         }  
  24.         optional("org.apache.tiles:tiles-el:3.0.1") {  
  25.             exclude group: "org.slf4j", module: "jcl-over-slf4j"  
  26.         }  
  27.         provided("javax.servlet:javax.servlet-api:3.0.1")  
  28.         testCompile("org.slf4j:slf4j-jcl:${slf4jVersion}")  
  29.     }  
  30.     eclipseClasspath {  
  31.             downloadSources = false// required for eclipseClasspath to work  
  32.     }  
  33. }  

 重新运行命令,这一次终于让我看到了BUILD SUCCESSFUL的字样了……

 

成功build完成后,可以看到spring目录下的spring-webmvc-tiles3项目也正常生成了导入eclipse需要的文件。打开.classpath查看一下:

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <classpath>  
  3.     <classpathentry kind="output" path="spring-webmvc-tiles3/bin/eclipse"/>  
  4.     <classpathentry output="bin/main" kind="src" path="src/main/java"/>  
  5.     <classpathentry output="bin/test" kind="src" path="src/test/java"/>  
  6.     <classpathentry output="bin/test" kind="src" path="src/test/resources"/>  
  7.     <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>  
  8.     <classpathentry kind="src" path="/spring-context" exported="true"/>  
  9.     <classpathentry kind="src" path="/spring-web" exported="true"/>  
  10.     <classpathentry kind="src" path="/spring-webmvc" exported="true"/>  
  11.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-api/1.0.1/jar/ac444f7d599a6ae28c360cd10fdf2aafa3b87106/tiles-request-api-1.0.1.jar"/>  
  12.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-api/3.0.1/jar/3d49cebe1adfb2074332ccb16eb9cfe7647e1759/tiles-api-3.0.1.jar"/>  
  13.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-core/3.0.1/jar/359a3c7f0155f03ae5d12d2f779859a453c437bf/tiles-core-3.0.1.jar"/>  
  14.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-servlet/3.0.1/jar/4ec5bed5f984ac1ed54bec1cbb0e51c1cb4e3dad/tiles-servlet-3.0.1.jar"/>  
  15.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-jsp/3.0.1/jar/3554582e83bd84bcce601b935440ff281d1d210f/tiles-jsp-3.0.1.jar"/>  
  16.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-extras/3.0.1/jar/2b959bcc00256131e6f9c8b44da0e8937cb1b8ac/tiles-extras-3.0.1.jar"/>  
  17.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-el/3.0.1/jar/e3454acc31fcb2705e7c82cffe69b9b14a9dde46/tiles-el-3.0.1.jar"/>  
  18.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/javax.el/el-api/1.0/jar/df8c6ce0406676e70c5d018e5fb988be1bcf1024/el-api-1.0.jar"/>  
  19.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/javax.servlet/jstl/1.2/jar/74aca283cd4f4b4f3e425f5820cda58f44409547/jstl-1.2.jar"/>  
  20.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/javax.servlet.jsp/jsp-api/2.1/jar/63f943103f250ef1f3a4d5e94d145a0f961f5316/jsp-api-2.1.jar"/>  
  21.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/javax.servlet/javax.servlet-api/3.0.1/jar/6bf0ebb7efd993e222fc1112377b5e92a13b38dd/javax.servlet-api-3.0.1.jar"/>  
  22.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar"/>  
  23.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.hamcrest/hamcrest-all/1.3/jar/63a21ebc981131004ad02e0434e799fd7f3a8d5a/hamcrest-all-1.3.jar"/>  
  24.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.mockito/mockito-core/1.9.5/jar/c3264abeea62c4d2f367e21484fbb40c7e256393/mockito-core-1.9.5.jar"/>  
  25.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.easymock/easymock/2.5.2/jar/e25783424f37ade86d387afbdbb7845a6782ef1e/easymock-2.5.2.jar"/>  
  26.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.easymock/easymockclassextension/2.5.2/jar/59ee00208cca7b869b661d78aed67cc5bc0db804/easymockclassextension-2.5.2.jar"/>  
  27.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.slf4j/slf4j-jcl/1.6.1/jar/b5902b1ba8ec58a96140bb7445037b3512cc99bb/slf4j-jcl-1.6.1.jar"/>  
  28.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-beanutils/commons-beanutils/1.8.0/jar/c651d5103c649c12b20d53731643e5fffceb536/commons-beanutils-1.8.0.jar"/>  
  29.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-digester/commons-digester/2.0/jar/3dbd8a76683cd563583a2c78c356ad8b8acf38bf/commons-digester-2.0.jar"/>  
  30.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-servlet/1.0.1/jar/b74ca6c9c9eedfcaf1b8e9a8889d0dcf615df33d/tiles-request-servlet-1.0.1.jar"/>  
  31.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-autotag-core-runtime/1.1.0/jar/1fb6109d5bc35c7403a55d019e0e8cf8ec06b49e/tiles-autotag-core-runtime-1.1.0.jar"/>  
  32.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-template/3.0.1/jar/e9ab8acfa97bc812a71334394d1f573b25b5aebe/tiles-template-3.0.1.jar"/>  
  33.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-jsp/1.0.1/jar/ad5fa55a948087e67593adbff312206d07033c08/tiles-request-jsp-1.0.1.jar"/>  
  34.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-logging/commons-logging/1.1.1/jar/5043bfebc3db072ed80fbd362e7caf00e885d8ae/commons-logging-1.1.1.jar"/>  
  35.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/aopalliance/aopalliance/1.0/jar/235ba8b489512805ac13a8f9ea77a1ca5ebe3e8/aopalliance-1.0.jar"/>  
  36.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-servlet-wildcard/1.0.1/jar/b84cc2ad3647ec2c4e172803719277e74bde4b3f/tiles-request-servlet-wildcard-1.0.1.jar"/>  
  37.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.codehaus.jackson/jackson-core-asl/1.5.2/jar/d31b0bc93ebc95c6aa0cdb1b044701ba17429d78/jackson-core-asl-1.5.2.jar"/>  
  38.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.codehaus.jackson/jackson-mapper-asl/1.5.2/jar/5d242931f6a8baa486ef8646ec8476cf6a14b50/jackson-mapper-asl-1.5.2.jar"/>  
  39.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/com.google.guava/guava/r09/jar/9c8991d491d714053d300de0f8657d95780ff923/guava-r09.jar"/>  
  40.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/com.github.spullara.mustache.java/core/0.6.2/jar/88ee806dd40a1e836d3dc1ac6ba8487ccd0ac693/core-0.6.2.jar"/>  
  41.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/com.github.spullara.mustache.java/builder/0.6.2/jar/79a18555b1948b81bc94fe570f8d8a3c6fe2966c/builder-0.6.2.jar"/>  
  42.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-mustache/1.0.1/jar/4fff86a848e8a10d0e59c2058dad1aba07c21c2e/tiles-request-mustache-1.0.1.jar"/>  
  43.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.freemarker/freemarker/2.3.15/jar/c8cfe522476fcec8da5c980d58bf62d6ab0cf27c/freemarker-2.3.15.jar"/>  
  44.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-freemarker/1.0.1/jar/9b5709d70ac5c80586fdbb6ddf11577d97492582/tiles-request-freemarker-1.0.1.jar"/>  
  45.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-freemarker/3.0.1/jar/a452de79623f48bbd642073424faa9e46eed2c79/tiles-freemarker-3.0.1.jar"/>  
  46.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/oro/oro/2.0.8/jar/5592374f834645c4ae250f4c9fbb314c9369d698/oro-2.0.8.jar"/>  
  47.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-lang/commons-lang/2.4/jar/16313e02a793435009f1e458fa4af5d879f6fb11/commons-lang-2.4.jar"/>  
  48.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/commons-collections/commons-collections/3.2.1/jar/761ea405b9b37ced573d2df0d1e3a4e0f9edc668/commons-collections-3.2.1.jar"/>  
  49.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.velocity/velocity/1.6.2/jar/1b470ec12a9b8aa69b0458a7e477dacb2cbdd6a0/velocity-1.6.2.jar"/>  
  50.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.velocity/velocity-tools/2.0/jar/69936384de86857018b023a8c56ae0635c56b6a0/velocity-tools-2.0.jar"/>  
  51.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-request-velocity/1.0.1/jar/5b1532240d5a69244c468e38c89158caff29f3ce/tiles-request-velocity-1.0.1.jar"/>  
  52.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-velocity/3.0.1/jar/3ff74e88c4a6fe4e70e89492acf0c2c235659eac/tiles-velocity-3.0.1.jar"/>  
  53.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.mvel/mvel2/2.0.11/jar/14bb21dabd899d2e60d9c0d008f267ed0d6c9ea8/mvel2-2.0.11.jar"/>  
  54.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-mvel/3.0.1/jar/582c704beb37b6be8370e5f068f92f5c1afd1814/tiles-mvel-3.0.1.jar"/>  
  55.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/jboss/javassist/3.7.ga/jar/6d271a67a1d8718bfb225ace5a25f1c09427c9f8/javassist-3.7.ga.jar"/>  
  56.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/ognl/ognl/2.7.3/jar/8c391fdc943b352045bd35c4f57306ccc6442f7c/ognl-2.7.3.jar"/>  
  57.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-ognl/3.0.1/jar/8388c282fa8e0013814cd2bba43e5cf3bcde23f0/tiles-ognl-3.0.1.jar"/>  
  58.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.apache.tiles/tiles-compat/3.0.1/jar/c740c6ab329bacaae02863723280eadead778edc/tiles-compat-3.0.1.jar"/>  
  59.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.hamcrest/hamcrest-core/1.3/jar/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar"/>  
  60.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.objenesis/objenesis/1.2/jar/bfcb0539a071a4c5a30690388903ac48c0667f2a/objenesis-1.2.jar"/>  
  61.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/cglib/cglib-nodep/2.2/jar/59afed7ab65e7ec6585d5bc60556c3cbd203532b/cglib-nodep-2.2.jar"/>  
  62.     <classpathentry kind="lib" path="C:/Users/so/.gradle/caches/artifacts-15/filestore/org.slf4j/slf4j-api/1.6.1/jar/6f3b8a24bf970f17289b234284c94f43eb42f0e4/slf4j-api-1.6.1.jar"/>  
  63.     <classpathentry kind="src" path="/spring-aop" exported="true"/>  
  64.     <classpathentry kind="src" path="/spring-core" exported="true"/>  
  65.     <classpathentry kind="src" path="/spring-beans" exported="true"/>  
  66.     <classpathentry kind="src" path="/spring-expression" exported="true"/>  
  67.     <classpathentry kind="src" path="/spring-instrument" exported="true"/>  
  68.     <classpathentry kind="src" path="/spring-oxm" exported="true"/>  
  69.     <classpathentry kind="src" path="/spring-context-support" exported="true"/>  
  70.     <classpathentry kind="src" path="/spring-jdbc" exported="true"/>  
  71.     <classpathentry kind="src" path="/spring-tx" exported="true"/>  
  72. </classpath>  

 果然没有sourcepath的信息。

 

折腾了那么久,终于到了可以看一下成果的时候了。

Spring Tool Suite说简单一点就是Spring家的eclipse,去官网下一个最新版,安装上。

打开STS,菜单File->import选择General下面的Exsiting projects into workspace,勾选要导入的子项目,确定即可。


 

成果如上,齐齐整整,没有错误,挺好!







亲测成功



spring3.2通过新的基于Gradle的构建来构建项目,它取代了之前的Ant+Ivy系统。
本文就介绍如何将spring3.2的源码导入到myeclipse中。

大伙可先参考一下spring的官方文档说明:https://github.com/SpringSource/spring-framework
Building from source
The Spring Framework uses a Gradle-based build system. In the instructions below, ./gradlew is invoked from the root of the source tree and serves as a cross-platform, self-contained bootstrap mechanism for the build. The only prerequisites are Git and JDK 1.7+.(先决条件是Git和JDK 1.7+)
check out sources
     git clone git://github.com/SpringSource/spring-framework.git
compile and test, build all jars, distribution zips and docs
    ./gradlew build
install all spring-* jars into your local Maven cache
    ./gradlew install
import sources into your IDE
Run ./import-into-eclipse.sh or read import-into-idea.md as appropriate.

本人电脑环境:mac OS X 10.8.2,jdk1.7.0_11,git 1.7.10.2
lie-mac:spring xionglie$ java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
lie-mac:spring xionglie$ git --version
git version 1.7.10.2 (Apple Git-33)
操作过程:
lie-mac:~ xionglie$ cd ~/Downloads/spring/
lie-mac:spring xionglie$ git clone git://github.com/SpringSource/spring-framework.git
lie-mac:spring xionglie$ cd spring-framework
lie-mac:spring-framework xionglie$ ./import-into-eclipse.sh 
注意:
(1).这里会执行5步操作,在第2步和第4步都要各导入(import)全部项目(~/Downloads/spring/spring-framework)到myeclipse中,相当于要导入两次,你只单独导入第4步的项目是不行的。
(2)STEP 1的时间会比较长,如果执行不下去,请多次执行 ./import-into-eclipse.sh ;
(3)myeclipse的编译环境要修改为jdk7,不要使用默认的jdk6。如我的jdk7的ire-home为 :/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home

-----------------------------------------------------------------------
Spring Framework Eclipse/STS project import guide
This script will guide you through the process of importing the
Spring Framework sources into Eclipse/STS. It is recommended that you
have a recent version of the SpringSource Tool Suite (this script has
been tested against STS 2.9.2.RELEASE), but at the minimum you will
need Eclipse + AJDT.
If you need to download and install STS, please do that now by
visiting http://springsource.org/downloads/sts
Otherwise, press enter and we'll begin. (按enter)
-----------------------------------------------------------------------
STEP 1: Generate subproject Eclipse metadata
The first step will be to generate Eclipse project metadata for each
of the spring-* subprojects. This happens via the built-in
"Gradle wrapper" script (./gradlew in this directory). If this is your
first time using the Gradle wrapper, this step may take a few minutes
while a Gradle distribution is downloaded for you.
The command run will be:
./gradlew cleanEclipse :spring-oxm:compileTestJava eclipse -x :eclipse
Press enter when ready. (按enter)
:buildSrc:compileJava UP-TO-DATE
:buildSrc:compileGroovy UP-TO-DATE
:buildSrc:processResources UP-TO-DATE

…省略….
BUILD SUCCESSFUL


Total time: 10 mins 30.351 secs

-----------------------------------------------------------------------
STEP 2: Import subprojects into Eclipse/STS
Within Eclipse/STS, do the following:
File > Import... > Existing Projects into Workspace
> When prompted for the 'root directory', provide /Users/xionglie/Downloads/spring/spring-framework
> Press enter. You will see the modules show up under "Projects"
> All projects should be selected/checked. Click Finish.
> When the project import is complete, you should have no errors.
When the above is complete, return here and press the enter key.

------------------------------------------------------------------------
STEP 3: generate root project Eclipse metadata
Unfortunately, Eclipse does not allow for importing project
hierarchies, so we had to skip root project metadata generation in the
during step 1. In this step we simply generate root project metadata
so you can import it in the next step.
The command run will be:
./gradlew :eclipse
Press the enter key when ready.
:buildSrc:compileJava UP-TO-DATE
:buildSrc:compileGroovy UP-TO-DATE
:buildSrc:processResources UP-TO-DATE
:buildSrc:classes UP-TO-DATE
:buildSrc:jar UP-TO-DATE
:buildSrc:assemble UP-TO-DATE
:buildSrc:compileTestJava UP-TO-DATE
:buildSrc:compileTestGroovy UP-TO-DATE
:buildSrc:processTestResources UP-TO-DATE
:buildSrc:testClasses UP-TO-DATE
:buildSrc:test UP-TO-DATE
:buildSrc:check UP-TO-DATE
:buildSrc:build UP-TO-DATE
:eclipseClasspath
:eclipseJdtPrepare
:eclipseJdt
:eclipseProject
:eclipseSettings
:eclipseWstComponent
:eclipse
BUILD SUCCESSFUL
Total time: 16.551 secs

-----------------------------------------------------------------------
STEP 4: Import root project into Eclipse/STS
Follow the project import steps listed in step 2 above to import the
root project.
Press enter when complete, and move on to the final step.

-----------------------------------------------------------------------
STEP 5: Enable Git support for all projects
- In the Eclipse/STS Package Explorer, select all spring* projects.
- Right-click to open the context menu and select Team > Share Project…
- In the Share Project dialog that appears, select Git and press Next
- Check "Use or create repository in parent folder of project"
- Click Finish
When complete, you'll have Git support enabled for all projects.
You're ready to code! Goodbye!

最终导入结果:

本文转载自:http://blog.csdn.net/zeuskingzb/article/details/41425421

共有 人打赏支持
sjzmlb
粉丝 7
博文 30
码字总数 2410
作品 0
海淀
程序员
Eclipse搭建Spring开发环境

这篇文章简单介绍下如何利用Eclipse搭建Spring开发环境。 一、软件准备 1. Eclipse, 下载地址:http://www.eclipse.org,可下载3.6版本 2. SpringIde, 有两种安装方法,官网:http://www.spri...

小梅菜鸟
2012/04/26
0
0
spring boot 1.5.4 入门和原理(二)

1 spring boot入门 1.1 环境准备 JDK 7及以上 eclipse开发工具 项目管理工具Maven 本文采用、RELEASE(或1.5.2.RELEASE)调试通过。 spring-boot相关项目源码, 码云地址:https://git.oschi...

wyait
2017/09/18
0
0
SpringBoot整合Mybatis完整版

自从Spring推出Boot,Cloud系列之后,一度成为热门的框架,现在大部分的招聘要求都要有相关的开发经验,借此我在这里就给大家分享一下如何玩转SpringBoot跟Mybatis。 这里我给大家提供我创建...

dsn727455218
07/13
0
0
Eclipse导入Spring库

Date:2012-11-28 Environment:Spring 3.1.3,Eclipse 4.2 //Eclipse导入Spring库 ---方法一(推荐): 1.Window-Preferences->Java->Build Path->User Libraries中 New一个User Library,命名为S......

陈好
2012/11/28
0
2
Spring Security 3和CAS 3.5.2集成的完整实例

回顾 在上一篇文章,利用Spring Security 3.2的remember-me搭建SSO,我做了一个简单的单点登录。但其毕竟不够健壮,比如无法点单登出,也无法与非Spring Security的应用集成。今天,我将使用...

xpbug
2014/03/04
0
21
maven下使用junit对spring进行单元测试_01基本应用

一、开发环境 maven版本:3.0.5 spring版本:spring3.2.3 release junit版本:4.11 eclipse版本:3.7.2 r2 jdk版本:1.6 二、文件清单 pom.xml <properties><project.build.sourceEncoding>UTF-8<......

jeffsui
2014/10/23
0
3
【01】eclipse导入spring源码

spring现在把源码都托管到了github上,通过spring的官网找到spring framework 项目,然后找到github即可,也可以直接点击下面链接 https://github.com/spring-projects/spring-framework/tr...

二两豆腐
2016/02/19
105
0
Lemon OA 发布 1.2.0 版本,开源 OA

LemonOA发布1.2.0版本 1.2.0版本的改进,是在activiti-5.15的基础上,支持了任务抄送。并重写了xform电子表单,初步支持单元格合并。 详细修订列表:https://github.com/xuhuisheng/lemon/i...

xyz20003
2014/06/11
3.8K
15
二、idea导入spring源码

在 fork 官方源码 到自己的仓库后(fork 的好处是方便自己试验和注释), 将其 git clone 下来, 因平时工作用的是 idea 就想用 idea 作为工具。 clone 下来后可以看到根目录下有2个指引文件...

holysu
07/11
0
0
《Spring Security3》附录翻译(参考资料)

附录:参考材料 在本附录中,将会涉及到一些我们感觉有用的参考材料(并相当缺乏文档),而将其插入到章节的内容中又会觉得过于综合。 JBCP Pets示例代码起步 就像我们在第一章:一个不安全应...

小样
2012/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot Admin 2.0开箱体验

概述 在我之前的 《Spring Boot应用监控实战》 一文中,讲述了如何利用 Spring Boot Admin 1.5.X 版本来可视化地监控 Spring Boot 应用。说时迟,那时快,现在 Spring Boot Admin 都更新到 ...

CodeSheep
10分钟前
0
0
Python + Selenium + Chrome 使用代理 auth 的用户名密码授权

米扑代理,全球领导的代理品牌,专注代理行业近十年,提供开放、私密、独享代理,并可免费试用 米扑代理官网:https://proxy.mimvp.com 本文示例,是结合米扑代理的私密、独享、开放代理,专...

sunboy2050
52分钟前
0
0
实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部