Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cursive doesn't recognize multiple "classifier" jars from dependencies #978

Closed
cprice404 opened this issue Jul 23, 2015 · 6 comments
Closed
Milestone

Comments

@cprice404
Copy link

This is probably effectively a duplicate of #558 , which we thought was fixed at one point. I decided to open a new issue after a particularly painful day of dancing around this issue. :(

When a project specifies a dependency on multiple "classifier" jars from an upstream project, Cursive's symbol recognition / auto-completion / etc. only recognize one of the jars.

Here's a repro project:

https://github.com/cprice404/cursive-testjar-test

If you open that up in cursive and then go look at the single test namespace, you should see that it's recognizing the stuff from the testutils namespace (from test jar) but not the stuff from the production namespace.

Running things via lein / REPL works fine, so lein is obviously capable of putting both the main and test jar on the classpath. Not sure where the wires get crossed in Cursive, but if you look in the 'external libraries' section of the project explorer treeview, only the test jar shows up.

I've used this style of artifact classification with IDEA and maven in the past, so I think IntelliJ is capable of supporting it.

I had a case today where I had to add a test jar to one of our biggest projects, and now all of the downstream projects are kind of a nightmare to work with in Cursive because the test jar has superseded the main jar and thus Cursive is no longer able to recognize any symbols from the main jar. :(

If this does end up boiling down to lein wackiness, I'll again throw out the offer of assistance in working up a PR for lein.

I'm actually thinking about going through all of our projects and getting rid of the test jars and just putting the tests into the production jars to get around this because it's so painful :) But it feels like designing the code around the capabilities of the editor is probably not the best way to go.

Let me know if there's anything I can do to help!

@cursive-ide
Copy link
Owner

Ok, that sounds pretty bad. There are clearly a lot of issues with the way Cursive handles lein - I'm planning to try a new approach very soon which will invoke lein more directly, and hopefully fix a lot of issues along the way.

@mruzicka
Copy link

mruzicka commented Nov 3, 2015

The situation has changed in that symbols from the production namespace are now recognized but symbols from the testutils namespace are not. This corresponds to the fact that only the main kitchensink jar file shows up in the 'external libraries' section of the project explorer treeview. So this is not resolved yet.

@mruzicka
Copy link

mruzicka commented Nov 3, 2015

Tested with cursive 0.1.68 on IntelliJ 15.0.

@cprice404
Copy link
Author

Well, drat. This worked properly for me on 0.1.65 - I would see both a test jar and a main jar in the 'External Libraries' list, and all of the completion worked properly. However, updating to 0.1.66 breaks it again, in the way that @mruzicka described :(

@cprice404
Copy link
Author

This seems to be working for me again in 0.1.69. Hooray!

@mruzicka
Copy link

mruzicka commented Nov 5, 2015

It works for me too, yay! 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants