2017-02-02 14 views
0

У меня есть проект, который зависит от локальной искусственности для нескольких зависимостей.Gradle: переход к многостраничной структуре - невозможно разрешить репозиторий

Gradle построить на этом проекте работает отлично, с правильными настройками для хранилища:

buildscript { 
    repositories { 
     maven { 
      url "${artifactoryUrl}/libs-release" 
     } 
    } 
    dependencies { 
     classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.4.10' 
    } 
} 

repositories { 
    maven { 
     url "${artifactoryUrl}/repo" 
    } 
} 

artifactory { 
    contextUrl = "${artifactoryUrl}" 
    publish { 
     repository { 
      repoKey = 'libs-snapshot-local' // The Artifactory repository key to publish to 
      username = "${artifactoryUser}" // The publisher user name 
      password = "${artifactoryPassword}" // The publisher password 
     } 
     defaults { 
      // Reference to Gradle publications defined in the build script. 
      // This is how we tell the Artifactory Plugin which artifacts should be 
      // published to Artifactory. 
      publications('mavenJava') 
      publishArtifacts = true 
      // Properties to be attached to the published artifacts. 
      properties = ['qa.level': 'basic', 'dev.team' : 'core'] 
     } 
    } 
    resolve { 
     repoKey = 'repo' 
    } 
} 

Я следовал Gradle учебников по структуре несколько проектов. Похоже, я могу переместить раздел «репозиторий» в корневой файл gradle.build. Однако, когда я бег Gradle сборок я получаю и ошибки на все зависимости от Artifactory:

Не может решить внешнюю зависимости

Примечания: Я также добавил gradle.properties файл в корневой директории, которая содержит все переменные (artifactoryUrl и т. д.).

Похоже, что подпроект не может «видеть» репозиторий, определенный в корневом файле gradle.build. Какие-либо предложения?

UPDATE

Мои build.gradle на корневой директории будет выглядеть так:

allprojects { 
} 

subprojects { 
    buildscript { 
     repositories { 
      maven { 
       url "${artifactoryUrl}/libs-release" 
      } 
     } 
     dependencies { 
      classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.4.10' 
     } 
    } 

    repositories { 
     maven { 
      url "${artifactoryUrl}/repo" 
     } 
    } 

    artifactory { 
     contextUrl = "${artifactoryUrl}" 
     publish { 
      repository { 
       repoKey = 'libs-snapshot-local' // The Artifactory repository key to publish to 
       username = "${artifactoryUser}" // The publisher user name 
       password = "${artifactoryPassword}" // The publisher password 
      } 
      defaults { 
       // Reference to Gradle publications defined in the build script. 
       // This is how we tell the Artifactory Plugin which artifacts should be 
       // published to Artifactory. 
       publications('mavenJava') 
       publishArtifacts = true 
       // Properties to be attached to the published artifacts. 
       properties = ['qa.level': 'basic', 'dev.team' : 'core'] 
      } 
     } 
     resolve { 
      repoKey = 'repo' 
     } 
    } 
} 
+0

Что вы получаете при работе с флагами '-i' или' -d'? Там где-то должно быть свидание. –

+0

Только связанное сообщение, которое я вижу с 'id' is" Нет локального репозитория в файле настроек. Использование пути по умолчанию: /home/elad/.m2/repository " –

+0

Я думаю, что вам не хватает" применить плагин: ', см. Мой обновленный ответ –

ответ

0

Вы должны поместить repositoryartifactory) блока (ов) в блоке subprojects или allprojects. Таким образом:

subprojects { 
    repositories { 
    maven { 
     url "${artifactoryUrl}/repo" 
    } 
    } 
    ... 
} 

Это гарантирует, что конфигурация выталкивается вниз с корнем build.gradle в конфигурацию каждого из ваших подпроектов.

Также для Artifactory, не забудьте применить Artifactory плагин для всех подпроектов:

subprojects { 
    apply plugin: "com.jfrog.artifactory" 

    ... 
} 
+0

я сделал. Обновлен вопрос с полным корневым файлом build.gradle. Пожалуйста ознакомтесь. –

+0

Я добавил плагин тоже, тот же результат ... –

0

Таким образом, после глядя на некоторые примеры, я понял, что раздел buildscript должен быть вне секции subprojects, а не внутри. И то, что apply plugin: 'com.jfrog.artifactory' должно быть добавлено также в разделе подпроектов.

buildscript { 
    repositories { 
     maven { 
      url "${artifactoryUrl}/libs-release" 
     } 
    } 
    dependencies { 
     classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.4.10' 
    } 
} 

subprojects { 
    repositories { 
     maven { 
      url "${artifactoryUrl}/repo" 
     } 
    } 

    artifactory { 
     contextUrl = "${artifactoryUrl}" 
     publish { 
      repository { 
       repoKey = 'libs-snapshot-local' // The Artifactory repository key to publish to 
       username = "${artifactoryUser}" // The publisher user name 
       password = "${artifactoryPassword}" // The publisher password 
      } 
     defaults { 
       // Reference to Gradle publications defined in the build script. 
       // This is how we tell the Artifactory Plugin which artifacts should be 
       // published to Artifactory. 
       publications('mavenJava') 
       publishArtifacts = true 
       // Properties to be attached to the published artifacts. 
       properties = ['qa.level': 'basic', 'dev.team' : 'core'] 
      } 
     } 
     resolve { 
      repoKey = 'repo' 
     } 
    } 
}