Как вы показали на скриншоте, Gradle пытается разрешить зависимость под названием com.sikulix:${sikulix.libs}:1.1.0
. Конечно, здесь есть заполнитель, который называется ${sikulix.libs}
, который не был заменен.
Указатель заполнителя определен в профиле Maven в файле pom для sikuli . Соответствующие части:
<profiles>
<profile>
<id>Windows</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<sikulix.libs>sikulixlibswin</sikulix.libs>
</properties>
</profile>
<profile>
<id>Unix</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<sikulix.libs>sikulixlibslux</sikulix.libs>
</properties>
</profile>
<profile>
<id>Mac</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<sikulix.libs>sikulixlibsmac</sikulix.libs>
</properties>
</profile>
</profiles>
<!-- ... -->
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>${sikulix.libs}</artifactId>
<version>${project.version}</version>
</dependency>
К сожалению, Gradle не поддерживает профили Maven, поэтому вам нужно создать правило замены самостоятельно, чтобы исправить это. Вы можете сделать это следующим образом:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.name == '${sikulix.libs}') {
def os = org.gradle.internal.os.OperatingSystem.current()
def targetName
if (os.isWindows()) {
targetName = 'sikulixlibswin'
} else if (os.isUnix()) {
targetName = 'sikulixlibslux'
} else if (os.isMacOsX()) {
targetName = 'sikulixlibsmac'
} else {
throw new GradleException("Unknow operating system for determining the sikulix distribution")
}
details.useTarget group: details.requested.group, name: targetName, version: details.requested.version
details.because 'The Maven dependency is relying on profiles to select the correct module name for the current operating system'
}
}
}
Если вы используете версию 1.1.0, вам также может понадобиться определить дополнительный репозиторий Maven для одной из транзитивных зависимостей под названием jxgrabkey
. Этот репозиторий также определен в pom, но не будет автоматически использоваться Gradle. Вы можете добавить его так:
repositories {
maven {
url = 'http://mvn.is.inf.uni-due.de:8081/nexus/content/repositories/atunes-dependencies/'
}
}
Но если вы обновитесь до последней версии 1.1.1, в этом не будет необходимости.