Как использовать задачу maven ant из gradle? - PullRequest
7 голосов
/ 08 ноября 2010

Я пытаюсь опубликовать некоторые артефакты в центральном репозитории maven, и поскольку текущая версия gradle (0.9-rc2) не обрабатывает pgp, я подумал, что попробую «перенести» версию ant xml во время ожидания Gradle 1.0, который, я надеюсь, будет поддерживать его из коробки.

Я написал следующее в Gradle:

def mvn = 
    groovy.xml.NamespaceBuilder.newInstance(ant, 'antlib:org.apache.maven.artifact.ant')

  mvn.mvn {
    arg(value: 'org.apache.maven.plugins:maven-gpg-plugin:1.1:sign-and-deploy-file')
    arg(value: '-Durl=file:///tmp/repo2')
    arg(value: '-DrepositoryId=sonatype-nexus-staging')
    arg(value: '-DpomFile=pom.xml')
    arg(value: '-Dfile=myjar.jar')
    arg(value: '-Dfile=-Pgpg')
  }

К сожалению, это не работает, и я получаю это:

Cause: Problem: failed to create task or type antlib:org.apache.maven.artifact.ant:mvn
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet

Я пробовал различные комбинации, включая добавление следующего в верхней части моего сценария:

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath 'org.apache.maven:maven-ant-tasks:2.1.1'
  }
}

Любая помощь будет высоко ценится

Спасибо Ян

1 Ответ

7 голосов
/ 09 ноября 2010

Я не нашел способа использовать NamespaceBuilder, но нашел другой способ, позволяющий напрямую использовать задачу, которая решает мою проблему:

repositories {
  mavenCentral()
}

configurations {
    mavenAntTasks
}

dependencies {
    mavenAntTasks 'org.apache.maven:maven-ant-tasks:2.1.1'
}

task hello << {
  ant.taskdef(resource: 'org/apache/maven/artifact/ant/antlib.xml',
              uri: 'antlib:org.apache.maven.artifact.ant',
              classpath: configurations.mavenAntTasks.asPath)
  ant.mvn(...)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...