2015-03-19 3 views
5

Я использую плагин «maven» для загрузки артефактов, созданных Gradle build, в центральный репозиторий Maven. Я использую задачу, аналогичную следующей:Как исключить зависимости в файле POM, сгенерированном Gradle

uploadArchives { 
    repositories { 
    mavenDeployer { 
     beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } 

     pom.project { 
     name 'Example Application' 
     packaging 'jar' 
     url 'http://www.example.com/example-application' 

     scm { 
      connection 'scm:svn:http://foo.googlecode.com/svn/trunk/' 

      url 'http://foo.googlecode.com/svn/trunk/' 
     } 

     licenses { 
      license { 
      name 'The Apache License, Version 2.0' 
      url 'http://www.apache.org/licenses/LICENSE-2.0.txt' 
      } 
     } 

     } 
    } 
    } 
} 

Однако файл POM, созданный этой задачи не сообщается правильно зависимостей, которые были исключены в моем Gradle построить файл. Например:

dependencies { 
    compile('org.eclipse.jgit:org.eclipse.jgit.java7:3.5.2.201411120430-r') { exclude module: 'commons-logging' } 
    compile('com.upplication:s3fs:0.2.8') { exclude module: 'commons-logging' } 
} 

Как исключить зависимости, управляемые правильно в результирующем файле POM?

ответ

3

Проблема заключалась в том, что в exclude определения не указана группа, но только модуль.

Добавление обоих из них Исключения добавлены правильно в файле POM. Например:

compile('org.eclipse.jgit:org.eclipse.jgit.java7:3.5.2.201411120430-r') { 
    exclude group: 'commons-logging', module: 'commons-logging' 
} 
compile('com.upplication:s3fs:0.2.8') { 
    exclude group: 'commons-logging', module: 'commons-logging' 
} 
5

Вы можете просто переопределить зависимости pom, отфильтровывая нежелательные зависимости, например. исключить JUnit вы можете добавить следующие строки в конфигурацию mavenDeployer:

pom.whenConfigured { 
    p -> p.dependencies = p.dependencies.findAll { 
     dep -> dep.artifactId != "junit" 
    } 
} 
Смежные вопросы