with plugin not jfrog found gradle artifactory

plugin - artifactory gradle repository



El complemento artifactory de Gradle dice "No se puede lanzar el objeto ''org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention''..." (5)

Aquí está la configuración para obtener el plugin artifactory:

buildscript { repositories { mavenCentral() maven { url ''http://jcenter.bintray.com'' } } dependencies { classpath group:''org.jfrog.buildinfo'', name: ''build-info-extractor-gradle'', version: ''3.0.1'' } } apply plugin:''com.jfrog.artifactory'' apply plugin:''ivy-publish'' ...some publish spec stuff...

Corro Gradle (2.3) y me sale:

> Failed to apply plugin [id ''com.jfrog.artifactory''] > Cannot cast object ''org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention@6b6c7be4'' with class ''org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention'' to class ''org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention''

Ciertamente parece un problema de ruta de clase, pero literalmente tengo este proyecto y un proyecto de hermanos que usan este mismo conjunto de configuraciones de gradle / artifactory y una funciona y la otra no. Ambos son parte del mismo proyecto de nivel superior. Mismo JDK (1.8.0_20). Mismo gradle Lo mismo todo.

Estoy desconcertado ...


Aquí hay otra causa potencial. Todo esto parece ser un problema con los cargadores de clases rivales que definen la clase. Las clases completas cualificadas incluyen el cargador. así, la carga A foo.bar no es el cargador B foo.bar y cruzar esa división es una danza compleja que requiere interfaces y una definición cuidadosa.

Por lo tanto, cuando use el complemento de artefacto de Jenkins para construir su proyecto gradle con el complemento de artefacto de gradle, debe agregar el plugin usesPlugin o jenkins generará un script de inicio que agrega el complemento de gradle a un cargador de clases.

def server = Artifactory.server "artifactory" def rtGradle = Artifactory.newGradleBuild() rtGradle.usesPlugin = true // Artifactory plugin already defined in build script ...

Mi problema fue, compilación de escritorio, OK, la compilación de Jenkins muestra el problema de esta publicación


El problema fue que cuando agregué varios bits al proyecto de hermanos, eso significaba que tenía dos proyectos que definían la sección de buildscript {}.

buildscript { ... dependencies { classpath group:''org.jfrog.buildinfo'', name: ''build-info-extractor-gradle'', version: ''3.0.1'' } }

Aparentemente eso causó que existieran dos versiones diferentes de la dependencia en la ruta de clase, de ahí el error.

La solución fue mover el bit de buildscript al proyecto maestro para que esas dependencias solo se definan una vez:

buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath group:''org.jfrog.buildinfo'', name: ''build-info-extractor-gradle'', version: ''3.0.1'' } }


En caso de que ayude a alguien, tengo el mismo error, pero por una razón diferente.

Tuve lo siguiente en mi build.gradle :

dependencies { classpath "org.jfrog.buildinfo:build-info-extractor-gradle:+" }

En algún momento, el complemento de artefactos se actualizó a sí mismo de la versión 3.xa la versión 4.x durante la compilación, ya que no se especificó una versión específica para la dependencia. Después de que se actualizó, recibí el error ( Could not find any convention object of type ArtifactoryPluginConvention ).

Supongo que el problema fue que el resto de la configuración en mi script de compilación no funciona con la nueva versión del complemento. Configurar la dependencia para usar la versión 3.x solucionó el problema para mí:

dependencies { classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.+" }


Estaba obteniendo una excepción similar cuando construía con Jenkins. Para mí, el conflicto fue con la versión de Jenkin y la versión en el script de compilación:

Para solucionar esto, la sección de Artefactos de la compilación tiene una marca que puede verificar especificando que desea usar la versión del archivo de gradle:

Esto solucionó mi problema. Espero eso ayude.


Tuve un problema similar. Gradle parece tratar de alcanzar y hacer algunas comprobaciones o evaluaciones entre hermanos. Tengo una configuración de nivel superior. Grado con 10 o más subproyectos.

La solución para mí fue colocar el bloque de buildscript y las dependencias en el nivel superior de build.gradle y colocarlo en cada uno de los subproyectos de build.gradle de los archivos individuales cuando sea necesario.

Supongo que la razón por la que esto funciona es que el complemento se carga en el padre, que será un cargador de clases principal, luego cada proyecto secundario hereda ese cargador de clase de tal manera que la declaración en el script secundario inferior usa esa clase de cargadores de clase y no se produce CCE. El problema es que son la misma clase, pero no se pueden asignar desde los diferentes cargadores de clases por subproyecto si no se declara nada en la parte superior. Esto fue Gradle 2.4, y usando IntelliJ 14.