Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gradle无法解析sikulixapi_Java_Selenium_Selenium Webdriver_Gradle_Dependency Management - Fatal编程技术网

Java Gradle无法解析sikulixapi

Java Gradle无法解析sikulixapi,java,selenium,selenium-webdriver,gradle,dependency-management,Java,Selenium,Selenium Webdriver,Gradle,Dependency Management,我正试图将我的项目从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/' } }

我正试图将我的项目从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'
}
这里是依赖项的问题:

我还尝试使用其他版本的sikuli,但也没有成功。 这个问题是否可能与我的项目结构有关


我非常感谢您的帮助:)

尝试添加额外的maven回购:

repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'https://repo.spring.io/snapshot/'
    }
}
并为sikuli添加分组

dependencies {
    compile group: 'org.sikuli', name: 'sikuli-api', version: '1.1.0'
}

Maven还有一个要转换的id:

<dependencies>
    <dependency>
        <groupId>testName</groupId>
        <artifactId>testName</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>
另外,尝试使用实现而不是编译。2018年之后是不推荐使用的语法

如果此更改未成功生成,请尝试使用api作为声明,而不是implementation。 例如,api'com.sikulix:sikulixapi:1.1.0'

毕竟,如果适用,更新库是一个不错的选择


希望对你有帮助

如您在屏幕截图中所示,Gradle试图解析名为
com.sikulix:${sikulix.libs}:1.1.0
的依赖关系。当然,这里有一个名为
${sikulix.libs}
的占位符,它没有被替换

占位符实际上是在中的Maven配置文件中定义的。有关部分如下:


窗户
窗户
西库利布斯温
Unix
unix
锡库利斯卢克斯
雨衣
雨衣
sikulixlibsmac
com.sikulix
${sikulix.libs}
${project.version}
不幸的是,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'
        }
    }
}
repositories {
    maven {
        url = 'http://mvn.is.inf.uni-due.de:8081/nexus/content/repositories/atunes-dependencies/'
    }
}
如果您使用的是1.1.0版,您可能还必须为一个名为
jxgrabkey
的可传递依赖项定义一个额外的Maven存储库。该存储库也在pom中定义,但Gradle不会自动使用。您可以这样添加它:

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'
        }
    }
}
repositories {
    maven {
        url = 'http://mvn.is.inf.uni-due.de:8081/nexus/content/repositories/atunes-dependencies/'
    }
}

但是,如果您升级到最新的1.1.1,这将不是必需的。

这样对我很有效

dependencies {
    ... 
    compile files('sikulifolder/sikulixapi.jar')
    ...
}
sikulifolder-是在我的项目目录中包含jar的文件夹。 别忘了依赖关系顺序很重要。
例如,我在上一个selenium依赖项之前设置了它。

我也这样做了,但同样的问题也发生了。还有什么需要检查的吗?试试新的版本。