2012-09-15 23 views
5

Jestem nowy, aby oceniać i chciałbym uzyskać dostęp do mojego sztucznego repozytorium. Jeśli wstawię wszystkie konfiguracje do jednego skryptu kompilacji, kompilacja się powiedzie. Oto odnośne części mojego build.gradle:Gradle: Nie można skonfigurować artefakala z zewnętrznego skryptu kompilacji.

allprojects { 
    apply plugin: 'java' 
    apply plugin: 'eclipse' 
    apply plugin: 'artifactory' 
} 

// ... 

buildscript { 
    repositories { 
     maven { 
      url 'http://repo.jfrog.org/artifactory/gradle-plugins' 
     } 

     maven { 
      url artifactory_contextUrl + 'plugins-release' 

      credentials { 
       username = artifactory_user 
       password = artifactory_password 
      } 
     } 
    } 

    dependencies { 
     classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.16') 
    } 
} 


artifactory { 
    contextUrl = artifactory_contextUrl 

    publish { 
     repository { 
      repoKey = 'libs-release-local' 
      username = artifactory_user 
      password = artifactory_password 
      maven = true 
     } 
    } 

    resolve { 
     repository { 
      repoKey = 'libs-release' 
      username = artifactory_user 
      password = artifactory_password 
      maven = true 
     } 
    } 
} 


dependencies { 
    // My dependencies ... 
} 

// Rest of the build script ... 

Teraz chciałbym wyciągnąć część artifactory do osobnego skryptu Gradle dla lepszej organizacji. To tam buduje się źle. Dość nieoczekiwanie, pojawia się następujący komunikat o błędzie, nawet jeśli skopiować mój build.gradle do foo.gradle i zmiana build.gradle po prostu zawierać pojedynczą linię

apply from: 'foo.gradle' 

Błąd znajduje

FAILURE: Build failed with an exception. 

* Where: 
Script '/path/to/my/project/foo.gradle' line: 5 

* What went wrong: 
A problem occurred evaluating script. 
> Plugin with id 'artifactory' not found. 

W przypadku nie jest to błąd, czy ktoś może wyjaśnić to zachowanie gradle's apply from i zaproponować rozwiązanie?

Dziękuję

Odpowiedz

5

apply from część jest analizowany raz skrypt kompilacji jest już skonfigurowany, więc mówienie Gradle gdzie znaleźć wtyczek konkretnym ID jest zbyt późno. Będziesz musiał zachować buildscript udział w skrypcie, lub umieścić go w init script:

apply from : 'http://link.to/my/gradle.script' 
+0

Przydałoby przykład, jak to będzie działać w skrypt inicjujący. Próbowałem, ale nie mogłem uruchomić skryptu inicjalizacyjnego i poprawnie skonfigurować. –

+1

Cóż, dokładnie o tym mówi sekcja 60.5. Dodano przykład. – JBaruch

1

Można również użyć pełną nazwę klasy do stosowania wtyczek w skrypcie pomocnika:

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath "com.adaptc.gradle:nexus-workflow:0.5" 
     classpath "org.jfrog.buildinfo:build-info-extractor-gradle:2.2.4" 
    } 
} 
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin 
apply plugin: com.adaptc.gradle.nexusworkflow.NexusWorkflowPlugin 

Zauważ, że Gradle nie znajdzie wtyczek, jeśli umieścisz cytaty wokół nazwy klasy, tak jak normalnie zrobiłbyś to z nazwami wtyczek.

ten sposób znalazłem nazwę klasy dla wtyczki Artifactory:

  1. Ściągnąłem plugin, który był na szczęście open source.

  2. Szukałem nazwy wtyczki wśród plików i znalazłem artifactory-puplish.properties.

  3. Zawierał on następujące właściwość: implementation-class=org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin

source of nexus-workflow nie ma takich właściwości pliku więc rozejrzałem się aż znalazłem

plugins-gradle-master/nexus-workflow/src/main/groovy/com/adaptc/gradle/nexusworkflow/NexusWorkflowPlugin.groovy 
Powiązane problemy