У меня есть следующие в моей build.gradle
:Как я могу сделать uploadArchives зависимым от другой задачи?
afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
pom.packaging = "aar"
pom.groupId = project.CORE_GROUP
pom.version = project.CORE_VERSION_NAME
repository(url: "scp://" + project.CORE_MAVEN_URL) {
authentication(userName: project.uploadUsername, privateKey: project.uploadKeyFile)
}
}
}
}
}
И я хочу быть зависимым от следующей задачи:
task checkProperties << {
if (!project.hasProperty('uploadUsername')) {
throw new RuntimeException("Couldn't find uploadUsername property. Did you forget to specify it in ~/.gradle/gradle.properties?")
} else if (!project.hasProperty('uploadKeyFile')) {
throw new RuntimeException("Couldn't find uploadKeyFile property. Did you forget to specify it in ~/.gradle/gradle.properties?")
}
}
Как я могу добиться этого? Если я пишу следующее:
afterEvaluate { project ->
uploadArchives(dependsOn: checkProperties) {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
pom.packaging = "aar"
pom.groupId = project.CORE_GROUP
pom.version = project.CORE_VERSION_NAME
repository(url: "scp://" + project.CORE_MAVEN_URL) {
authentication(userName: project.uploadUsername, privateKey: project.uploadKeyFile)
}
}
}
}
}
Тогда я получаю следующее сообщение об ошибке:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/scottjohnson/Source/core-android/core/build.gradle' line: 61
* What went wrong:
A problem occurred configuring project ':core'.
> org.gradle.api.internal.MissingMethodException: Could not find method mavenDeployer() for arguments [build_42edqo[email protected]30b8afce] on repository container.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 7.68 secs
Кстати, почему я хочу сделать это в том, что прямо сейчас, если я просто поставить код, который проверяет свойства в задаче uploadArchives
, то даже если я запустил ./gradlew clean build
, он проверяет свойства (которые я не хочу выполнять на моем сервере сборки, поскольку у него нет разрешения на загрузку файлов). Таким образом, метод, который будет проверять свойства только при выполнении задачи uploadArchives
, также будет приемлемым.
Почему вы вызываете 'UploadArchives' сразу после' projectEvaluate' увольняют? Разве это не должна быть самостоятельная задача? – Opal
@Opal Я делаю это, потому что, если я не заключу его в это закрытие, тогда я получаю исключение неопределенного свойства: '> Не удалось найти свойство 'uploadUsername' в проекте ': core'.' – jwir3