2012-04-08 66 views
4

我們正在嘗試切換到gradle。一切工作正常,但我有一個內部存儲庫的問題,它只能用駐留在pkcs#11令牌上的客戶端證書進行訪問。Gradle - 公司存儲庫需要ssl客戶端證書

與Maven我剛剛有了一個.mavenrc文件是這樣的:

#!/bin/bash 
MAVEN_OPTS=" $MAVEN_OPTS \ 
     -Djava.security.debug=sunpkcs11 \ 
      -Djavax.net.ssl.trustStore=NONE \ 
      -Djavax.net.ssl.trustStoreType=pkcs11 \ 
      -Djavax.net.ssl.keyStore=NONE \ 
      -Djavax.net.ssl.keyStoreType=pkcs11 \ 
" 

,所以我把這些Java選項到我gradlew包裝腳本開頭:

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 
DEFAULT_JVM_OPTS=" \ 
-Djava.security.debug=sunpkcs11 \ 
-Djavax.net.ssl.trustStore=NONE \ 
-Djavax.net.ssl.trustStoreType=pkcs11 \ 
-Djavax.net.ssl.keyStore=NONE \ 
-Djavax.net.ssl.keyStoreType=pkcs11 \ 
" 

當我運行./ gradlew構建我被要求我的令牌的引腳,但然後工件的請求與401失敗。在服務器沒有客戶端證書到達。

$ ./gradlew --stacktrace compileJava

:compileJava 
SunPKCS11 loading /etc/opensc/opensc-java.cfg 
sunpkcs11: Initializing PKCS#11 library /usr/lib/opensc-pkcs11.so 
Information for provider SunPKCS11-OpenSC 
[lots of debugging infos from sub pkcs11] 
sunpkcs11: getting provider callback handler 
sunpkcs11: getting default callback handler 
[ entering PIN ] 
sunpkcs11: login succeeded 
sunpkcs11: user already logged in 
sunpkcs11: user already logged in 
sunpkcs11: user already logged in 
sunpkcs11: user already logged in 

FAILURE: Build failed with an exception. 

* What went wrong: 
Could not resolve all dependencies for configuration ':compile'. 
> Could not resolve group: .... 
    Required by: ... 
    > Could not GET 'https://nexus/PATH...'. Received status code 401 from server: Authorization Required 
    > Could not GET 'https://nexus/PATH...'. Received status code 401 from server: Authorization Required 

* Try: 
Run with --info or --debug option to get more log output. 

* Exception is: 
[...] 
Caused by: org.gradle.api.UncheckedIOException: Could not GET 'https://nexus/PATH...'. Received status code 401 from server: Authorization Required 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.processHttpRequest(HttpResourceCollection.java:145) 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.initGet(HttpResourceCollection.java:121) 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.getResource(HttpResourceCollection.java:81) 
    at org.gradle.api.internal.artifacts.repositories.transport.http.HttpResourceCollection.getResource(HttpResourceCollection.java:54) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.getResource(ResourceCollectionResolver.java:304) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.findStaticResourceUsingPattern(ResourceCollectionResolver.java:248) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.findResourceUsingPattern(ResourceCollectionResolver.java:234) 
    at org.gradle.api.internal.artifacts.repositories.ResourceCollectionResolver.findResourceUsingPatterns(ResourceCollectionResolver.java:136) 
    at org.gradle.api.internal.artifacts.repositories.MavenResolver.findIvyFileRef(MavenResolver.java:117) 
    at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:223) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.DependencyResolverAdapter.getDependency(DependencyResolverAdapter.java:84) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CacheLockingModuleVersionRepository$1.create(CacheLockingModuleVersionRepository.java:53) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CacheLockingModuleVersionRepository$1.create(CacheLockingModuleVersionRepository.java:51) 
    at org.gradle.cache.internal.DefaultCacheAccess.longRunningOperation(DefaultCacheAccess.java:172) 
    at org.gradle.cache.internal.DefaultPersistentDirectoryStore.longRunningOperation(DefaultPersistentDirectoryStore.java:107) 
    at org.gradle.api.internal.artifacts.ivyservice.DefaultCacheLockingManager.longRunningOperation(DefaultCacheLockingManager.java:57) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CacheLockingModuleVersionRepository.getDependency(CacheLockingModuleVersionRepository.java:51) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository.resolveModule(CachingModuleVersionRepository.java:150) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository.findModule(CachingModuleVersionRepository.java:88) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository.getDependency(CachingModuleVersionRepository.java:79) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.IvyContextualiser$1.invoke(IvyContextualiser.java:44) 
    at $Proxy34.getDependency(Unknown Source) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain.findLatestModule(UserResolverChain.java:71) 
    at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain.resolve(UserResolverChain.java:52) 
    ... 91 more 

似乎gradle這個(常規)支持,因爲它要求輸入PIN標準Java SSL屬性,但那麼它不會成功。

一切工作正常,如果我用一個簡單的Java類,像這樣運行:

java URL url = new URL("..."); 
InputStreamReader is = new InputStreamReader(url.openStream()); 
BufferedReader in = new BufferedReader(is); 
String inputLine; 
while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine); 
in.close(); 

調用它像這樣工作正常:

java -Djava.security.debug=sunpkcs11 -Djavax.net.ssl.trustStore=NONE -Djavax.net.ssl.trustStoreType=pkcs11 -Djavax.net.ssl.keyStore=NONE -Djavax.net.ssl.keyStoreType=pkcs11 jget/JGet 

ssl.keyStoreType = PKCS11 \ 「

這是我的build.gradle

task wrapper(type: Wrapper) { gradleVersion = "1.0-milestone-9" } 
apply plugin: "java" 
repositories { maven { url "https://developer/nexus/content/repositories/thirdparty" } } 
dependencies { compile "org.projectx:tools:1.0" } 

任何人都可以幫助我嗎?

回答

0

我在http://issues.gradle.org/browse/GRADLE-2234上打開了一個問題,因爲它似乎是里程碑-6 它與里程碑-5一起工作的bug,所以如果有人需要此功能,請使用里程碑-5並等待此錯誤得到修復。

+0

似乎現在已經解決了。可能你可以接受你自己的答案) – sandrstar 2015-08-28 02:58:07