From 44a474a014788e7850cee3a5318ac3916e55e756 Mon Sep 17 00:00:00 2001 From: Chris Beams Date: Mon, 17 Dec 2012 10:16:03 +0100 Subject: [PATCH] Various updates to support IDEA Remove the 'final' modifier from SingletonBeanFactoryLocatorTests to work around the "cannot extend final class" error issued when running all tests. The error was due to confusion with IDEA between the two variants of SingletonBeanFactoryLocatorTests across spring-context and spring-beans. Rename one of the GroovyMessenger classes to GroovyMessenger2. Previously there were multiple Groovy classes named 'GroovyMessenger', causing a compilation error in certain IDE arrangements. Update import-into-idea.md documentation Add various IDEA artifacts to .gitignore - ignore derby.log wherever it is written - ignore IDEA's test-output directory - ignore IDEA's Atlassian connector config file --- .gitignore | 6 +++-- import-into-idea.md | 24 +++++++++---------- .../SingletonBeanFactoryLocatorTests.java | 4 ++-- .../scripting/groovy/Messenger.groovy | 3 +-- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index 5d40a5584c..c79bac7342 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ integration-repo ivy-cache jxl.log jmx.log -spring-jdbc/derby.log +derby.log spring-test/test-output/ .gradle build @@ -19,8 +19,10 @@ build argfile* pom.xml -# IDEA metadata and output dirs +# IDEA artifacts and output dirs *.iml *.ipr *.iws out +test-output +atlassian-ide-plugin.xml diff --git a/import-into-idea.md b/import-into-idea.md index 15a4e9e62d..4bbac88504 100644 --- a/import-into-idea.md +++ b/import-into-idea.md @@ -1,10 +1,10 @@ -The following has been tested against Intellij IDEA 11.0.1 +The following has been tested against Intellij IDEA 12.0 ## Steps _Within your locally cloned spring-framework working directory:_ -1. Generate IDEA metadata with `./gradlew cleanIdea idea` +1. Generate IDEA metadata with `./gradlew :spring-oxm:compileTestJava cleanIdea idea` 2. Import into IDEA as usual 3. Set the Project JDK as appropriate 4. Add git support @@ -12,21 +12,21 @@ _Within your locally cloned spring-framework working directory:_ ## Known issues -1. MockServletContext and friends will fail to compile in spring-web. To fix this, uncheck the 'export' setting for all servlet-api and tomcat-servlet-api jars. The problem is that spring-web needs Servlet 2.5, but it's picking up Servlet 3.0 from projects that it depends on. -2. spring-context will fail to build because there's a duplicate instance of GroovyMessenger in spring-context/src/test/java/org/springframework/scripting/groovy/Messenger.groovy. The solution to this is not known. It's not a problem on Eclipse, because Eclipse doesn't automatically compile .groovy files like IDEA (apparently) does. - -There are no other known problems at this time. Please add to this list, and if you're ambitious, consider playing with the Gradle IDEA generation DSL to fix these problems automatically, e.g.: - -* http://gradle.org/docs/current/dsl/org.gradle.plugins.ide.idea.model.IdeaProject.html -* http://gradle.org/docs/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html -* http://gradle.org/docs/current/groovydoc/org/gradle/plugins/ide/idea/model/IdeaModule.html +1. `spring-aspects` does not compile out of the box due to references to aspect types unknown to IDEA. +See http://youtrack.jetbrains.com/issue/IDEA-64446 for details. In the meantime, you may want to +exclude `spring-aspects` from the overall project to avoid compilation errors. +2. While all JUnit tests pass from the command line with Gradle, many will fail when run from IDEA. +Resolving this is a work in progress. If attempting to run all JUnit tests from within IDEA, you will +likely need to set the following VM options to avoid out of memory errors: + -XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m ## Tips -In any case, please do not check in your own generated .iml, .ipr, or .iws files. You'll notice these files are already intentionally in .gitignore. The same policy goes for eclipse metadata. +In any case, please do not check in your own generated .iml, .ipr, or .iws files. +You'll notice these files are already intentionally in .gitignore. The same policy goes for eclipse metadata. ## FAQ Q. What about IDEA's own [Gradle support](http://confluence.jetbrains.net/display/IDEADEV/Gradle+integration)? -A. Unknown. Please report back if you try it and it goes well for you. +A. Keep an eye on http://youtrack.jetbrains.com/issue/IDEA-53476 diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/access/SingletonBeanFactoryLocatorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/access/SingletonBeanFactoryLocatorTests.java index ff63ff84d5..2a9bff1c30 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/access/SingletonBeanFactoryLocatorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/access/SingletonBeanFactoryLocatorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import org.springframework.util.ClassUtils; * @author Colin Sampaleanu * @author Chris Beams */ -public final class SingletonBeanFactoryLocatorTests { +public class SingletonBeanFactoryLocatorTests { private static final Class CLASS = SingletonBeanFactoryLocatorTests.class; private static final String REF1_XML = CLASS.getSimpleName() + "-ref1.xml"; diff --git a/spring-context/src/test/java/org/springframework/scripting/groovy/Messenger.groovy b/spring-context/src/test/java/org/springframework/scripting/groovy/Messenger.groovy index 93030df159..002aca83d0 100644 --- a/spring-context/src/test/java/org/springframework/scripting/groovy/Messenger.groovy +++ b/spring-context/src/test/java/org/springframework/scripting/groovy/Messenger.groovy @@ -1,8 +1,7 @@ package org.springframework.scripting.groovy; -import org.springframework.scripting.ConfigurableMessenger import org.springframework.stereotype.Component; @Component -class GroovyMessenger extends ConcreteMessenger { +class GroovyMessenger2 extends ConcreteMessenger { }