2017-01-17 4 views
0

Je dois ignorer certaines dépendances définies dans la configuration "configurations.nonDistributable" lors de l'utilisation de gradles plugin maven-publish pour générer des fichiers pom, je n'ai pas trouvé un moyen fiable de le faire, sauf pour l'analyse manuelle du XML pour les supprimer. Est-ce que je manque quelque chose, est-ce que gradle permet une manière plus facile de faire ceci?La configuration de dépendance spécifique de Gradle remove from pom généré

exemple build.gradle:

configurations{ 
    nonDistributable 
} 

dependencies { 
    nonDistributable ('org.seleniumhq.selenium:selenium-java:2.52.0'){ 
     exclude group:'com.google.guava' // included in elasticsearch 
    } 

    nonDistributable ('com.assertthat:selenium-shutterbug:0.3') { 
     transitive = false 
    } 

    nonDistributable 'mysql:mysql-connector-java:5.1.40' 
    nonDistributable fileTree(dir: 'non-distributable-libs', include: '*.jar') 
} 

// generate subprojects pom 
subprojects { 
    apply plugin: 'maven-publish' 
    model { 
     tasks.generatePomFileForMavenJavaPublication { 
      destination = file("$buildDir/../../$distDir/build/pom/$project.name-pom.xml") 
     } 
    } 
    afterEvaluate { project -> 
     publishing { 
      publications { 
       mavenJava(MavenPublication) { 
        from components.java 
       } 
      } 
     } 
    } 
} 

// generate root project pom 
model { 
    tasks.generatePomFileForMavenJavaPublication { 
     destination = file("$buildDir/../$distDir/build/pom/$project.name-pom.xml") 
    } 
} 
afterEvaluate { project -> 
    publishing { 
     publications { 
      mavenJava(MavenPublication) { 
       from components.java 
      } 
     } 
    } 
} 

Répondre

0

Vous pouvez créer votre propre pom publication. Cela ressemblerait à ceci:

customMaven(MavenPublication) { 
    artifactId 'myArtifactId' 
    pom.withXml { 
     def dependencies = asNode().appendNode('dependencies') 
     configurations.specialConfiguration.getResolvedConfiguration().getFirstLevelModuleDependencies().each { 
      def dependency = dependencies.appendNode('dependency') 
      dependency.appendNode('groupId', it.moduleGroup) 
      dependency.appendNode('artifactId', it.moduleName) 
      dependency.appendNode('version', it.moduleVersion) 
     } 
    } 
} 

Ensuite, vous pouvez créer une configuration spéciale qui s'étend uniquement des configurations que vous souhaitez inclure. J'utilise ceci pour créer un pom spécial qui contient toutes les dépendances de testRuntime à utiliser pour les tests d'intégration séparés du projet principal.