TL;DR: Ignore the @
suffix and you'll be just fine most of the time, if not all the time.
With that as prologue, here's my understanding of what's going on...
The @
syntax indicates that you want an artifact of this type, for cases where there may be multiple artifacts for that group ID/artifact ID that would be relevant for the situation.
For example, an Android library project naturally compiles down to an AAR, and so that would be the typical artifact that would be distributed. However, if the library project is not actually using resources, it could also be compiled down to a JAR, and therefore be usable in cases where an AAR would not. The library author could distribute both the AAR and JAR as separate artifact types for the same group ID/artifact ID, so tools can grab whichever one is appropriate. Tools where you don't supply the @
suffix will choose one, but if you do supply the suffix, the tool should abide by your request.
In the case of Android Studio, my understanding is that it will look for an AAR artifact first, then a JAR, if you do not specify otherwise. My understanding is that Maven for Android will do the reverse, looking for a JAR first, then an AAR.
So, if there's a library where the default artifact resolution is not to your liking, you can add the @
suffix and force the resolution to what you want. But, usually, the tool will do the right thing even without it.
Where having the @
suffix would be a problem is if you ask for something that does not exist. For example, compile 'com.android.support:appcompat-v7:22.1.1@jar'
would not work, as that artifact is only available as an AAR -- this should fail when it tries to download the dependency.