I agree that the Gradle is pathological in a lot of places. I've been working on correcting that for the last several months. It's slow going when you're restricted from breaking everything for a while. But it is getting better, for what it's worth.
I can't tell from that stack-blob where you hit an error -- in a test or in a build -- but I agree that resources shouldn't be getting compiled. That's a separate bit of strange. Maybe new IntelliJ is doing extra work to make sure there are no filename collisions? But I agree it's strange to have it duplicated, in any event. I don't know if we need two copies of the file. I would assume that we have one in geode-core:integrationTest:resources and one in geode-core:distributedTest:resources because the file is needed in at least one integration test and at least one distributed test. If it's there as a resource and not in the source, I would guess that it's for deploy command testing, in which we want to make sure the servers don't already have at launch the class that is being deployed. The geode-dunit module exists for those resources that belong to that intersection of integration and distributed tests. Perhaps everything would be fine if a single copy lived in geode-dunit:main:resources. If you wanted to look into it, I'd suggest starting there. Imagination is Change. ~Patrick On Mon, Dec 17, 2018 at 12:26 PM Kirk Lund <kl...@apache.org> wrote: > You're right. IntelliJ shouldn't be compiling these classes. However, the > real issue here is that our use of Gradle is so horribly unnatural that it > ends up confusing IntelliJ (and other tools). We should strive to NOT > confuse other tools by doing stupid stuff in Gradle. > > You've seen my instructions for configuring IJ and setting up a project (or > I assume you have). I'm still following that for every Geode project I > setup. Sometimes, one of these projects "misbehaves" and gets so confused > by Geode's crazy Gradle build that it goes belly-up. The result is we are > wasting the time of lots of developers because of this kind of non-sense. > > So, I ask again: do we really need two copies of the same file? > > On Mon, Dec 17, 2018 at 11:49 AM Galen O'Sullivan <gosulli...@pivotal.io> > wrote: > > > I don't understand our build or IntelliJ that well, but it seems weird to > > me that these classes would be getting built at all since they're in the > > resources section rather than java. I don't see compiled versions of > these > > classes in my geode directory. Perhaps it's an IntelliJ configuration > > issue? > > > > Galen > > > > > > On Mon, Dec 17, 2018 at 11:23 AM Kirk Lund <kl...@apache.org> wrote: > > > > > IntelliJ just started failing to compile because we have two copies of > > > ExtendsFunctionAdapter.java. Apparently, IJ was happy enough to ignore > > > these duplicates for a month or so, but it's now fed up and will no > > longer > > > tolerate the duplication so it's failing with: > > > > > > Error:(21, 8) java: duplicate class: > > > org.apache.geode.management.internal.deployment.ExtendsFunctionAdapter > > > > > > This file is in geode-core/src/distributedTest/resources and > > > geode-core/src/integrationTest/resources: > > > > > > 1) > > > > > > > > > ./geode-core/src/distributedTest/resources/org/apache/geode/management/internal/deployment/ExtendsFunctionAdapter.java > > > 2) > > > > > > > > > ./geode-core/src/integrationTest/resources/org/apache/geode/management/internal/deployment/ExtendsFunctionAdapter.java > > > > > > Apparently we have two tests that load these java files as resources: > > > > > > 1) > > > > > > > > > geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DeployCommandFunctionRegistrationDUnitTest.java:83: > > > > > > > > > > > > "/org/apache/geode/management/internal/deployment/ExtendsFunctionAdapter.java"); > > > 2.a) > > > > > > > > > geode-core/src/integrationTest/java/org/apache/geode/management/internal/deployment/FunctionScannerTest.java:62: > > > File sourceFileOne = loadTestResource("ExtendsFunctionAdapter.java"); > > > 2.b) > > > > > > > > > geode-core/src/integrationTest/java/org/apache/geode/management/internal/deployment/FunctionScannerTest.java:73: > > > File sourceFileOne = > > > loadTestResource("AbstractExtendsFunctionAdapter.java"); > > > 2.c) > > > > > > > > > geode-core/src/integrationTest/java/org/apache/geode/management/internal/deployment/FunctionScannerTest.java:74: > > > File sourceFileTwo = > > > loadTestResource("ConcreteExtendsAbstractExtendsFunctionAdapter.java"); > > > > > > Do we really need to have two copies of this file in our codebase? > > > > > > PS, here's the last commit to touch these two files: > > > > > > commit 65c79841b65d7bd9ffa3c50fa73d4d3857dced58 > > > > > > Author: Jacob Barrett <jbarr...@pivotal.io> > > > > > > Date: Fri Aug 10 15:49:22 2018 -0700 > > > > > > > > > GEODE-5530: Removes test dependency from other test source sets > > > (#2294) > > > > > > > > > > > > Moves common sources to geode-dunit or geode-junit. > > > > > > > > > > > > Co-authored-by: Finn Sutherland <fsoutherl...@pivotal.io> > > > > > > Thanks, > > > Kirk > > > > > >