I.e. ... "File" -> "New" -> "Project from Existing Sources..." -> <select your Geode working directory> -> "Import project from external model" -> "Gradle"
I don't trust Gradle to do the right thing when setting up an IDE (especially as the IDE versions change). Disclaimer: I have not tried this recently, but I usually have more success going this route. -John On Wed, Mar 23, 2016 at 1:40 PM, John Blum <[email protected]> wrote: > Kirk- rather than have Gradle generate the .idea project files, have you > tried importing the Geode project from existing sources using Gradle the > template? > > On Wed, Mar 23, 2016 at 1:28 PM, Kirk Lund <[email protected]> wrote: > >> RestAPIsWithSSLDUnitTest passes on the command-line. >> >> When I execute RestAPIsWithSSLDUnitTest in my IntelliJ project, the >> classpath of the test prints out with two versions of httpclient and >> httpcore: >> >> [vm_1] >> >> >> /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.2.5/666e26e76f2e87d84e4f16acb546481ae1b8e9a6/httpclient-4.2.5.jar >> [vm_1] >> >> >> /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.2.4/3b7f38df6de5dd8b500e602ae8c2dd5ee446f883/httpcore-4.2.4.jar >> [vm_1] >> >> >> /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.5.1/7e3cecc566df91338c6c67883b89ddd05a17db43/httpclient-4.5.1.jar >> [vm_1] >> >> >> /Users/klund/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.3/e876a79d561e5c6207b78d347e198c8c4531a5e5/httpcore-4.4.3.jar >> >> If you use "./gradlew idea" the resulting module definitions are not >> sufficient (to illustrate, try generating intellij projects for >> closed+open >> and then try editing and running DUnits in legacyDUnit and both assembly >> projects) and require some manual adjusting which is obviously error >> prone. >> I'm not an IntelliJ or gradle expert so I doubt that I'll be the one to >> fix >> this. >> >> Ultimately I'd like to see all of this become easier and simpler. I >> believe >> too much complexity or difficulty will result in a smaller number of >> contributors. It also results in contributors spending their time with >> gradle or the IDE instead of on geode. >> >> -Kirk >> >> >> On Wed, Mar 23, 2016 at 12:04 PM, Dan Smith <[email protected]> wrote: >> >> > First off, your intellij classpath and gradle classpath are pretty much >> the >> > same. The one exception, I think, is that the test target for >> > geode-assembly sets up a different runtime classpath to point at the >> > bundled product. I didn't set that up, but I think maybe the idea is >> that >> > we needed some tests of the actual bundled binary? Take a look at >> > geode-assembly/build.gradle. If someone knows how to fix the setup that >> so >> > we still have that test coverage of the bundled product and the tests do >> > work in intellij, please fix it! All of the rest of the tests should be >> > using exactly the same environment on the command line and in the IDE. >> > >> > I'm not sure if this is even your problem Kirk, did you try running from >> > the command line? >> > >> > Second, I don't see anything wrong with having transitive test >> > dependencies. It's a huge pain to track down the transitive dependencies >> > and keep them up to date manually. They aren't hurting you! >> > >> > Regarding John's struggles with dependencies of geode, what we really >> need >> > to do is clean up *product* dependencies of geode core - we're pulling >> in >> > all sorts of stuff for gfsh, pulse, the REST API, etc. GEODE-818 is all >> > about cleaning that up. I was hoping to take up GEODE-1072 (remove HDFS >> > code) when I get a chance. If you want to clean up the dependencies >> please >> > chip in and take on some of those subtasks, the sooner the better! >> > >> > -Dan >> > >> > On Wed, Mar 23, 2016 at 11:34 AM, John Blum <[email protected]> wrote: >> > >> > > If you created the IntelliJ IDEA project from the Gradle build, then >> it >> > is >> > > Geode's Gradle build scripts that are specifying the dependencies and >> > thus >> > > the Gradle build scripts are wrong. In Maven, you can declare a >> > > dependencyManagement section (along with exclusions) to manage >> transitive >> > > dependencies. I don't recall what the equivalent is in Gradle for >> > > dependencyManagement. >> > > >> > > On Wed, Mar 23, 2016 at 11:24 AM, Kirk Lund <[email protected]> wrote: >> > > >> > > > I think that maybe we don't want to continue with transitive >> > dependencies >> > > > enabled for testing. If we turn that off then we go back to having >> to >> > > > specify all versions even runtime test dependencies right? Are there >> > any >> > > > valid arguments for keeping transitive dependencies enabled for >> > testing? >> > > > >> > > > Also, why would my intellij dependencies be different from gradle >> > > > command-line? The one was built from the *.gradle files in geode. If >> > > > intellij's gradle picks up multiple versions of libraries, then I >> think >> > > > that still means something isn't right in our *.gradle files. >> > > > >> > > > Not that I want to see test failures... BUT, I want to spend my time >> > > > diagnosing test failures instead of dealing with gradle and >> dependency >> > > > versioning and wondering why intellij is picking up 2 versions of >> jna, >> > 3 >> > > > versions of apache http, etc. >> > > > >> > > > -Kirk >> > > > >> > > > >> > > > On Wed, Mar 23, 2016 at 11:04 AM, John Blum <[email protected]> >> wrote: >> > > > >> > > > > In a nutshell, you want the dependencies and all the transitive >> > > > > dependencies versions to agree, otherwise conflicts like what Kirk >> > > > > experienced, as well as what I experienced while integrating >> Apache >> > > Geode >> > > > > support into Spring Session, will occur, and users will have >> problems >> > > > using >> > > > > Geode in different contexts (e.g. App Server containers for >> Session >> > > > > management) >> > > > > >> > > > > Letting transitive dependencies of Geode (i.e. sub-projects) >> dictate >> > > > > dependency versions is NOT right and recipe for disaster. Also, >> you >> > > are >> > > > > not testing the dependencies, you are testing Geode with the >> > > > dependencies. >> > > > > >> > > > > >> > > > > On Wed, Mar 23, 2016 at 10:48 AM, Dan Smith <[email protected]> >> > wrote: >> > > > > >> > > > > > As far as the multiple versions of httpclient, I only see that >> > > > dependency >> > > > > > showing up in the test dependencies. Different sub projects have >> > > > > different >> > > > > > test dependencies, which are transitively pulling in different >> > > versions >> > > > > of >> > > > > > this jar. >> > > > > > >> > > > > > We can certainly force a version across all of the different >> > projects >> > > > in >> > > > > > dependency-resolution.gradle. But I think given these are >> different >> > > > > > projects with different test dependencies we should just let >> them >> > > pull >> > > > in >> > > > > > whatever test dependencies they need. >> > > > > > >> > > > > > >> > > > > > > ./gradlew geode-core:dependencyInsight --dependency httpclient >> > > > > > --configuration testRuntime >> > > > > > Picked up JAVA_TOOL_OPTIONS: >> > > > > > :geode-core:dependencyInsight >> > > > > > org.apache.httpcomponents:httpclient:4.2.5 >> > > > > > \--- org.apache.hadoop:hadoop-auth:2.4.1 >> > > > > > \--- testRuntime >> > > > > > >> > > > > > >> > > > > > >> > > > > > > ./gradlew geode-pulse:dependencyInsight --dependency >> httpclient >> > > > > > --configuration testRuntime >> > > > > > Picked up JAVA_TOOL_OPTIONS: >> > > > > > :geode-pulse:dependencyInsight >> > > > > > org.apache.httpcomponents:httpclient:4.5.1 >> > > > > > +--- org.seleniumhq.selenium:selenium-api:2.52.0 >> > > > > > | +--- testRuntime >> > > > > > | \--- org.seleniumhq.selenium:selenium-remote-driver:2.52.0 >> > > > > > | +--- testRuntime >> > > > > > | +--- >> > org.seleniumhq.selenium:selenium-firefox-driver:2.52.0 >> > > > > > | | \--- testRuntime >> > > > > > | \--- org.seleniumhq.selenium:selenium-support:2.52.0 >> > > > > > | \--- testRuntime >> > > > > > \--- org.seleniumhq.selenium:selenium-remote-driver:2.52.0 (*) >> > > > > > >> > > > > > >> > > > > > >> > > > > > On Wed, Mar 23, 2016 at 10:27 AM, Dan Smith <[email protected]> >> > > wrote: >> > > > > > >> > > > > > > The tests in that geode-assembly project are supposed to run >> on >> > the >> > > > > > binary >> > > > > > > assembly of the project, so I think the classpath when run >> from >> > the >> > > > > > command >> > > > > > > line might be a bit different than what you get in intellij. I >> > > think >> > > > > the >> > > > > > > command line classpath just points at geode-dependencies.jar. >> > > > > > > >> > > > > > > -Dan >> > > > > > > >> > > > > > > >> > > > > > > On Wed, Mar 23, 2016 at 10:01 AM, Kirk Lund <[email protected] >> > >> > > > wrote: >> > > > > > > >> > > > > > >> So as I look at dependencies, I see that our gradle build is >> > > > > ultimately >> > > > > > >> depending on multiple versions of the same libraries. Can't >> we >> > > clean >> > > > > > this >> > > > > > >> up? >> > > > > > >> >> > > > > > >> org.apache.httpcomponents:httpclient:4.2.5 >> > > > > > >> org.apache.httpcomponents:httpclient:4.3.3 >> > > > > > >> org.apache.httpcomponents:httpclient:4.5.1 >> > > > > > >> >> > > > > > >> I really don't want multiple versions of anything in this >> > project. >> > > > Are >> > > > > > we >> > > > > > >> not using gradle correctly? >> > > > > > >> >> > > > > > >> -Kirk >> > > > > > >> >> > > > > > >> >> > > > > > >> On Wed, Mar 23, 2016 at 9:23 AM, Kirk Lund <[email protected] >> > >> > > > wrote: >> > > > > > >> >> > > > > > >> > RestAPIsWithSSLDUnitTest failed in the nightly build. >> Failure >> > > > stack >> > > > > is >> > > > > > >> > below. I tried running this test by itself in intellij and >> it >> > > > fails >> > > > > > >> with "java.lang.NoSuchFieldError: >> > > > > > >> > INSTANCE" from "at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)". >> > > > > > >> > I posted that failure stack below as well. >> > > > > > >> > >> > > > > > >> > Any ideas what the NoSuckFieldError is about? >> > > > > > >> > >> > > > > > >> > :geode-assembly:distributedTest >> > > > > > >> > >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest >> > > > > > >> > > testMutualAuthentication FAILED >> > > > > > >> > java.lang.RuntimeException: unexpected exception >> > > > > > >> > at >> com.gemstone.gemfire.rest.internal.web.controllers. >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> RestAPIsWithSSLDUnitTest.validateConnection(RestAPIsWithSSLDUnitTest.java: >> > > > > > >> > 495) >> > > > > > >> > at >> com.gemstone.gemfire.rest.internal.web.controllers. >> > > > > > >> > RestAPIsWithSSLDUnitTest.testMutualAuthentication( >> > > > > > >> > RestAPIsWithSSLDUnitTest.java:648) >> > > > > > >> > >> > > > > > >> > Caused by: >> > > > > > >> > javax.net.ssl.SSLHandshakeException: Remote host >> > closed >> > > > > > >> > connection during handshake >> > > > > > >> > at sun.security.ssl.SSLSocketImpl.readRecord( >> > > > > > >> > SSLSocketImpl.java:992) >> > > > > > >> > at sun.security.ssl.SSLSocketImpl.waitForClose( >> > > > > > >> > SSLSocketImpl.java:1769) >> > > > > > >> > at sun.security.ssl.HandshakeOutStream.flush( >> > > > > > >> > HandshakeOutStream.java:124) >> > > > > > >> > at >> > sun.security.ssl.Handshaker.sendChangeCipherSpec( >> > > > > > >> > Handshaker.java:1083) >> > > > > > >> > at sun.security.ssl.ClientHandshaker. >> > > > > > >> > sendChangeCipherAndFinish(ClientHandshaker.java:1222) >> > > > > > >> > at >> > > sun.security.ssl.ClientHandshaker.serverHelloDone( >> > > > > > >> > ClientHandshaker.java:1134) >> > > > > > >> > at >> > sun.security.ssl.ClientHandshaker.processMessage( >> > > > > > >> > ClientHandshaker.java:348) >> > > > > > >> > at >> > > > > > sun.security.ssl.Handshaker.processLoop(Handshaker.java: >> > > > > > >> > 979) >> > > > > > >> > at >> > > > > sun.security.ssl.Handshaker.process_record(Handshaker. >> > > > > > >> > java:914) >> > > > > > >> > at sun.security.ssl.SSLSocketImpl.readRecord( >> > > > > > >> > SSLSocketImpl.java:1062) >> > > > > > >> > at >> > > > > sun.security.ssl.SSLSocketImpl.performInitialHandshake( >> > > > > > >> > SSLSocketImpl.java:1375) >> > > > > > >> > at >> sun.security.ssl.SSLSocketImpl.startHandshake( >> > > > > > >> > SSLSocketImpl.java:1403) >> > > > > > >> > at >> sun.security.ssl.SSLSocketImpl.startHandshake( >> > > > > > >> > SSLSocketImpl.java:1387) >> > > > > > >> > at >> > > > org.apache.http.conn.ssl.SSLConnectionSocketFactory. >> > > > > > >> > createLayeredSocket(SSLConnectionSocketFactory.java:394) >> > > > > > >> > at >> > > > org.apache.http.conn.ssl.SSLConnectionSocketFactory. >> > > > > > >> > connectSocket(SSLConnectionSocketFactory.java:353) >> > > > > > >> > at >> > > > > > org.apache.http.impl.conn.DefaultHttpClientConnectionOpe >> > > > > > >> > rator.connect(DefaultHttpClientConnectionOperator.java:134) >> > > > > > >> > at >> > > > > > org.apache.http.impl.conn.PoolingHttpClientConnectionMan >> > > > > > >> > ager.connect(PoolingHttpClientConnectionManager.java:353) >> > > > > > >> > at >> org.apache.http.impl.execchain.MainClientExec. >> > > > > > >> > establishRoute(MainClientExec.java:380) >> > > > > > >> > at >> org.apache.http.impl.execchain.MainClientExec. >> > > > > > >> > execute(MainClientExec.java:236) >> > > > > > >> > at org.apache.http.impl.execchain.ProtocolExec. >> > > > > > >> > execute(ProtocolExec.java:184) >> > > > > > >> > at >> > org.apache.http.impl.execchain.RetryExec.execute( >> > > > > > >> > RetryExec.java:88) >> > > > > > >> > at org.apache.http.impl.execchain.RedirectExec. >> > > > > > >> > execute(RedirectExec.java:110) >> > > > > > >> > at >> > > > > > org.apache.http.impl.client.InternalHttpClient.doExecute( >> > > > > > >> > InternalHttpClient.java:184) >> > > > > > >> > at >> > > > > > org.apache.http.impl.client.CloseableHttpClient.execute( >> > > > > > >> > CloseableHttpClient.java:82) >> > > > > > >> > at >> > > > > > org.apache.http.impl.client.CloseableHttpClient.execute( >> > > > > > >> > CloseableHttpClient.java:107) >> > > > > > >> > at >> > > com.gemstone.gemfire.rest.internal.web.controllers. >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> RestAPIsWithSSLDUnitTest.validateConnection(RestAPIsWithSSLDUnitTest.java: >> > > > > > >> > 474) >> > > > > > >> > ... 1 more >> > > > > > >> > >> > > > > > >> > Caused by: >> > > > > > >> > java.io.EOFException: SSL peer shut down >> > incorrectly >> > > > > > >> > at >> > > > > > >> sun.security.ssl.InputRecord.read(InputRecord.java:505) >> > > > > > >> > at >> sun.security.ssl.SSLSocketImpl.readRecord( >> > > > > > >> > SSLSocketImpl.java:973) >> > > > > > >> > ... 26 more >> > > > > > >> > >> > > > > > >> > java.lang.NoSuchFieldError: INSTANCE >> > > > > > >> > >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:726) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.getSSLBasedHTTPClient(RestAPIsWithSSLDUnitTest.java:458) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.validateConnection(RestAPIsWithSSLDUnitTest.java:473) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> com.gemstone.gemfire.rest.internal.web.controllers.RestAPIsWithSSLDUnitTest.testSSLWithoutKeyStoreType(RestAPIsWithSSLDUnitTest.java:522) >> > > > > > >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> Method) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> > > > > > >> > at java.lang.reflect.Method.invoke(Method.java:497) >> > > > > > >> > at junit.framework.TestCase.runTest(TestCase.java:176) >> > > > > > >> > at junit.framework.TestCase.runBare(TestCase.java:141) >> > > > > > >> > at >> junit.framework.TestResult$1.protect(TestResult.java:122) >> > > > > > >> > at >> > junit.framework.TestResult.runProtected(TestResult.java:142) >> > > > > > >> > at junit.framework.TestResult.run(TestResult.java:125) >> > > > > > >> > at junit.framework.TestCase.run(TestCase.java:129) >> > > > > > >> > at junit.framework.TestSuite.runTest(TestSuite.java:252) >> > > > > > >> > at junit.framework.TestSuite.run(TestSuite.java:247) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) >> > > > > > >> > at org.junit.runner.JUnitCore.run(JUnitCore.java:137) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) >> > > > > > >> > at >> > > > > > >> >> > > > > >> > com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) >> > > > > > >> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> Method) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> > > > > > >> > at >> > > > > > >> > >> > > > > > >> >> > > > > > >> > > > > >> > > > >> > > >> > >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> > > > > > >> > at java.lang.reflect.Method.invoke(Method.java:497) >> > > > > > >> > at >> > > > > > >> > com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) >> > > > > > >> > >> > > > > > >> > >> > > > > > >> >> > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > -John >> > > > > 503-504-8657 >> > > > > john.blum10101 (skype) >> > > > > >> > > > >> > > >> > > >> > > >> > > -- >> > > -John >> > > 503-504-8657 >> > > john.blum10101 (skype) >> > > >> > >> > > > > -- > -John > 503-504-8657 > john.blum10101 (skype) > -- -John 503-504-8657 john.blum10101 (skype)
