web-dev-qa-db-fra.com

Comment puis-je exclure les dépendances importées d'autres sous-projets?

Ce n'est pas un doublon car ces autres solutions n'ont pas fonctionné.

J'ai un sous-projet:

: commons: widget

gradle.build (sous-projet) ressemble à ceci:

configurations {providedCompile}

dependencies {
  compile project(":commons:other-widget")
...other dependencies...
}

Si vous affichez les dépendances:

+--- project :commons:some-other-project
    +--- project :commons:exclude-me-project (*)
    \--- org.Apache.cxf:cxf-rt-frontend-jaxrs: -> 3.0.3 (*)

Ce qui ne fonctionne pas:

N'importe quelle syntaxe habituelle. J'ai essayé toutes les variantes auxquelles je peux penser. Je suis même allé chercher l'API mais je n'ai pas pu trouver ce dont j'avais besoin.

Dans la section des dépendances de ce projet: ...

compile project(":commons:some-other-project") {
 exclude (":commons:exclude-me-project")
}

Résultat:

Could not find method exclude() for arguments [:commons:some-other-project] on project 

J'ai aussi essayé:

compile ( project (':commons:some-other-project') ) {
  transitive = false
}

Résultat: au lieu de supprimer les dépendances de ": commons: some-other-project", il supprime ": commons: some-other-project".

J'ai un grand projet compliqué à convertir. J'ai beaucoup de ce genre de travail devant moi. Étant donné un projet comme dépendance, comment puis-je en exclure des éléments?

20
user447607

exclude pour les dépendances a un peu une autre syntaxe, essayez donc de le faire en fournissant le nom du module, qui est égal à exclude-me-project nom, comme:

compile(project(":commons:some-other-project")) {
    exclude module: "exclude-me-project"
}

Alternativement, vous pouvez exclure toutes les dépendances transitives pour le projet commons, mais cela supprimera tous les dépôts du some-other-project projet, y compris le exclude-me-project:

compile(project(":commons:some-other-project")) {
    transitive = false
}
36
Stanislav