Hi Adam, and Peter,
   Thank you both for the quick response.

Adam, guess we'll have to stick with the "apply from" scripts that have the
extra code to check to see if the plugin is installed.

Peter, we're using what I think you'd call binary plugins at Chegg. We have
an artifactory repository that hosts the plugin's artifacts, which our
developers use by way of a a script:

[code src="
http://internal.host/gradle-plugins/installation/chegg-corp.groovy";]
buildscript {
repositories {
mavenRepo url: "http://internal.host/artifactory/repo";
}
dependencies {
classpath "com.chegg.corp.gradle:chegg-plugin:12.2"
}
}
// Check to make sure CheggCorpPlugin isn't already added.
boolean hasCorp = project.plugins.find { plugin ->
"${plugin.getClass()}" == "${com.chegg.corp.CheggCorpPlugin}"
}
if (!hasCorp) {
project.apply(plugin: com.chegg.corp.CheggCorpPlugin)
}
[/code]

This is fine except for the extra junk at the end where I need to check to
see if the plugin is already installed.

I did some testing and I found that if you use the plugin ID's (eg. apply
plugin: "chegg-corp") gradle gracefully handles the plugin being applied
multiple times, but because of this bug:
http://issues.gradle.org/browse/GRADLE-1517

We are forced to use the plugin's class, which doesn't seem to work the
same way.

The problem here is that we have one plugin called "chegg-corp", and
another "chegg-corp-api" which also applies the "chegg-corp" plugin.  Some
of our projects use the subprojects closure to apply the "chegg-corp"
plugin, and then have an "api" module that applies the "chegg-corp-api"
plugin. Gradle complains about the "chegg-corp" plugin already being
installed without the check. So I have to do the check in multiple places -
once in the "apply from" scripts, and anywhere else that one plugin applies
another.

If #1517 could be fixed, that would reduce a lot of boiler plate for our
plugins and our "apply from" scripts. I've already voted for the bug, but
would really appreciate it if that would could be fixed for 1.0, or at
least make it so applying the plugin via class works the same way as
applying it via ID.

-- 
Learn from the past. Live in the present. Plan for the future.
Blog: http://eric-berry.blogspot.com
jEdit <http://www.jedit.org> - Programmer's Text Editor
Bazaar <http://bazaar.canonical.com> - Version Control for Humans

Reply via email to