2017-02-15 10 views
3

Я пытаюсь опубликовать библиотеку в MavenCentral. Поэтому я следую за этим Chris Banes post.Как удалить зависимость от pom при публикации в mavenCentral

Все работает, но у меня есть небольшая проблема: Библиотека использует сервисы Google Play LIB:

compile 'com.google.android.gms:play-services:10.2.0' 

Но я не нужна зависимость, это просто факультативным и, если разработчик, используя мое приложение также добавляет игровые сервисы к своим зависимостям, я хочу обнаружить их и использовать некоторые классы. Но разработчик не добавляет эту зависимость, я обнаруживаю, что классы отсутствуют, и я их не использую.

Так что я хочу использовать зависимость для сборки для компиляции, но я не хочу, чтобы файл POM добавлял эту зависимость. Как я могу это сделать?

ответ

1

От Maven plugin doc вы можете использовать pom.whenConfigured для реорганизации зависимостей.

Например, следующий не будет принимать junit & play-services артефакта в зависимости:

whenConfigured { 
    p - > 
     p.dependencies = p.dependencies.findAll { 
      dep - > (dep.artifactId.notIn(["junit", "play-services"])) 
     } 
} 

В вашем примере вы будете иметь следующее исключить play-services:

pom { 

    project { 
     name POM_NAME 
     packaging POM_PACKAGING 
     description POM_DESCRIPTION 
     url POM_URL 

     scm { 
      url POM_SCM_URL 
      connection POM_SCM_CONNECTION 
      developerConnection POM_SCM_DEV_CONNECTION 
     } 

     licenses { 
      license { 
       name POM_LICENCE_NAME 
       url POM_LICENCE_URL 
       distribution POM_LICENCE_DIST 
      } 
     } 

     developers { 
      developer { 
       id POM_DEVELOPER_ID 
       name POM_DEVELOPER_NAME 
      } 
     } 
    } 

    whenConfigured { 
     p - > 
      p.dependencies = p.dependencies.findAll { 
       dep - > (dep.artifactId.notIn(["play-services"])) 
      } 
    } 
} 

Вы также можете исключить из списка dep.groupId или dep.version

+0

Спасибо f или ваш быстрый ответ. Я не очень опытен с градием или превосходством, на примере Криса Бэйнса, где я могу поставить этот код? Если я попытаюсь поместить его в файл maven-push.gradle, он жалуется в формате – Addev

+0

Работает ли он, если вы замените 'pom.project' из вашего' build.gradle' объектом 'pom' в моем сообщении? –

+0

Okey, у меня он работает, в основном добавил эту строку 'pom.whenConfigured {pom -> pom.dependencies = [] }' внутри 'mavenDeployer {}', чтобы не публиковать зависимости моего проекта. Большое спасибо – Addev

 Смежные вопросы

  • Нет связанных вопросов^_^