Gradle 无法解析 sikulixapi

我正在尝试将我的项目从 Maven 更改为 Gradle,但我遇到了一些依赖项问题。


这是我的 build.gradle 文件:


plugins {

    id 'java'

}


group 'de.myurl.test'

version '1.0-SNAPSHOT'


sourceCompatibility = 1.8


repositories {

    jcenter()

    maven {

        url 'https://repo.spring.io/snapshot/'

    }

}


dependencies {

    testCompile group: 'junit', name: 'junit', version: '4.12'

    compile group: 'jxgrabkey', name: 'jxgrabkey', version: '1.0'

    compile 'org.seleniumhq.selenium:selenium-server:3.9.1'

    compile 'net.java.dev.jna:jna-platform:4.0.0'

    compile 'log4j:log4j:1.2.17'

    compile 'com.sikulix:sikulixapi:1.1.0'

    compile 'net.java.dev.jna:jna:5.4.0'

    compile 'com.relevantcodes:extentreports:2.41.0'

    compile 'commons-io:commons-io:2.6'

    compile 'javax.activation:activation:1.1.1'

    compile 'com.sun.xml.ws:policy:2.3.1'

    compile 'com.sun.jmx:jmxri:1.2.1'

    compile 'javax.mail:mail:1.4'

    compile 'com.uttesh:pdfngreport:2.1.3'

    compile 'org.uncommons:reportng:1.1.4'

    compile 'org.testng:testng:7.0.0'

}

这是依赖关系的问题:

https://img1.sycdn.imooc.com/6528e59c0001b3b205800531.jpg

我还尝试使用其他版本的 sikuli 但也不起作用。这个问题有可能与我的项目结构有关吗?

我真的很感谢任何帮助:)


白衣染霜花
浏览 70回答 4
4回答

慕码人2483693

正如屏幕截图所示,Gradle 尝试解析名为 的依赖项com.sikulix:${sikulix.libs}:1.1.0。当然,这里有一个名为 的占位符${sikulix.libs}尚未被替换。占位符实际上是在sikuli 的 pom 文件的Maven 配置文件中定义的。相关部分如下:<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,就没有必要了。

qq_花开花谢_0

这样对我有用dependencies {&nbsp; &nbsp; ...&nbsp;&nbsp; &nbsp; compile files('sikulifolder/sikulixapi.jar')&nbsp; &nbsp; ...}sikulifolder - 是我的项目目录中包含 jar 的文件夹。并且不要忘记依赖顺序很重要。例如,我在最后一个硒依赖项之前设置它。

拉丁的传说

Maven还有一个要转换的id:<dependencies>&nbsp; &nbsp; <dependency>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>testName</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>testName</artifactId>&nbsp; &nbsp; &nbsp; &nbsp; <version>1.1.1</version>&nbsp; &nbsp; </dependency></dependencies>将使用以下表示法转换为 Gradle:dependencies {&nbsp; &nbsp; implementation 'testName:testName:1.1.1'&nbsp;}还尝试使用实现而不是编译。2018 年之后已弃用语法。如果此更改后构建未成功,请尝试使用api作为声明而不是实现。前任。api 'com.sikulix:sikulixapi:1.1.0'毕竟,如果适用的话更新库是一个不错的选择。希望对您有帮助!

白猪掌柜的

尝试添加额外的 Maven 存储库:repositories {&nbsp; &nbsp; jcenter()&nbsp; &nbsp; mavenCentral()&nbsp; &nbsp; maven {&nbsp; &nbsp; &nbsp; &nbsp; url 'https://repo.spring.io/snapshot/'&nbsp; &nbsp; }}并为 sikuli 添加分组dependencies {&nbsp; &nbsp; compile group: 'org.sikuli', name: 'sikuli-api', version: '1.1.0'}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java