2013-06-07 3 views
1

이제 Android 프로젝트 용 개미/게시 스크립트를 새로운 Android Gradle 빌드 시스템으로 마이그레이션하는 중입니다.Android : Gradle의 Artifactory를 통한 외부 의존성 해결

우리의 프로젝트는 일반적으로 내부 및 제 3 자 라이브러리에 의존합니다. 내부 라이브러리는 Artifactory 리포지토리에 게시되었으며 이제는 해당 라이브러리에 대한 의존성을 해결하기 위해 애 쓰고 있습니다.

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 

     maven{ 
      url 'http://dl.bintray.com/jfrog/jfrog-jars' 
     } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
     classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.1.0') 
    } 
} 
apply plugin: 'android' 
apply plugin: 'artifactory' 

artifactory { 
    contextUrl = 'my_artifactory_url' 

    resolve { 
     repository { 
      repoKey = 'libs-snapshot' 
      maven = true 
     } 
    } 
} 

dependencies { 
    compile files('libs/android-support-v4.jar') 
    compile(group: 'groupId', name: 'artifact1Id', version: 'artifact1Version') 
    compile(group: 'groupId', name: 'artifact2Id', version: 'artifact2Version') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

기본적으로 Artifactory {} 섹션과 두 개의 compile() 라인을 생성하기 위해 Artifactory의 기본 제공 옵션을 사용했습니다. 하지만 구축을 위해 노력이 오류가 있어요 (그리고 것은 내가 노력 사소한 어떤 변화를 가지고 계속) : 아마 뭔가 큰 누락

15:34:23.208 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception. 
15:34:23.209 [ERROR] [org.gradle.BuildExceptionReporter] 
15:34:23.210 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong: 
15:34:23.210 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred configuring project ':GradleArtifactoryTest'. 
15:34:23.210 [ERROR] [org.gradle.BuildExceptionReporter] > Failed to notify project evaluation listener. 
15:34:23.211 [ERROR] [org.gradle.BuildExceptionReporter] > Could not resolve all dependencies for configuration ':GradleArtifactoryTest:compile'. 
15:34:23.211 [ERROR] [org.gradle.BuildExceptionReporter]  > Could not find groupId:artifact1Id:artifact1Version. 
15:34:23.212 [ERROR] [org.gradle.BuildExceptionReporter]   Required by: 
15:34:23.212 [ERROR] [org.gradle.BuildExceptionReporter]    workspace_gradle-artifactory-test:GradleArtifactoryTest:unspecified 
15:34:23.213 [ERROR] [org.gradle.BuildExceptionReporter]  > Could not find groupId:artifact2Id:artifact2Version. 
15:34:23.213 [ERROR] [org.gradle.BuildExceptionReporter]   Required by: 
15:34:23.214 [ERROR] [org.gradle.BuildExceptionReporter]    workspace_gradle-artifactory-test:GradleArtifactoryTest:unspecified 

을하지만, Gradle을에 신인으로, 메이븐 & Artifactory, 나는 그 순간 잃어버린 느낌이 든다. 누군가가 나에게 계몽 할 수 있을지, 아니면 문제에 대한 정확한 정보를 얻을 수있는 방법을 말해 줄 수 있습니까? (--debug 및 --info, --s 및 -S 옵션을 시도했지만별로 도움이되지 않았습니다.) 초기 예외는 항상 :

Caused by: org.gradle.api.internal.artifacts.ivyservice.ModuleVersionNotFoundException: Could not find groupId:artifact1Id:artifact1Version. 
Required by: 
14:20:51.833 [ERROR] [org.gradle.BuildExceptionReporter]  workspace_gradle-artifactory-test:GradleArtifactoryTest:unspecified 
14:20:51.833 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.LazyDependencyToModuleResolver$StaticVersionResolveResult.notFound(LazyDependencyToModuleResolver.java:148) 
14:20:51.834 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.LazyDependencyToModuleResolver$AbstractVersionResolveResult.resolve(LazyDependencyToModuleResolver.java:89) 
14:20:51.834 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder$ModuleVersionSelectorResolveState.resolve(DependencyGraphBuilder.java:943) 
14:20:51.835 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder$DefaultModuleRevisionResolveState.getMetaData(DependencyGraphBuilder.java:648) 
14:20:51.835 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder$DependencyEdge.calculateTargetConfigurations(DependencyGraphBuilder.java:333) 
14:20:51.836 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder$DependencyEdge.attachToTargetConfigurations(DependencyGraphBuilder.java:309) 
14:20:51.836 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder.traverseGraph(DependencyGraphBuilder.java:130) 
14:20:51.836 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder.resolve(DependencyGraphBuilder.java:66) 
14:20:51.837 [ERROR] [org.gradle.BuildExceptionReporter] at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultDependencyResolver.resolve(DefaultDependencyResolver.java:7 

'gradle refresh-dependencies --info'명령은 더 유용한 정보를 제공하지 않습니다. 디버깅 흔적이 내가 제공 한 contextUrl을 결코 언급하지 않는다는 것이 무엇인지 매우 골치 아픈 일입니다. 대신 내가 가진 (내가해야 바가 아니다, 나는 가정) 다음을 수행하십시오 artifactory 저장소에

selecting new module version groupId#artifact1Id;artifact1Version 
16:58:08.827 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain] Attempting to resolve module 'groupId:artifact1Id:artifact1Version' using repositories [maven, maven2] 
16:58:08.829 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] Loading /Applications/Android Studio.app/sdk/extras/android/m2repository/groupId/artifact1Id/artifact1version/artifact1Id-artifact1Version.pom 
16:58:08.832 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] Resource not reachable for groupId#artifact1Id;artifact1Version: res=MissingResource: /Applications/Android Studio.app/sdk/extras/android/m2repository/groupId/artifact1Id/artifact1version/artifact1Id-artifact1Version.pom 
16:58:08.833 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] Loading /Applications/Android Studio.app/sdk/extras/android/m2repository/groupId/artifact1Id/artifact1version/artifact1Id-artifact1Version.apklib 
16:58:08.840 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver] Resource not reachable for groupId#artifact1Id;artifact1Version: res=MissingResource: /Applications/Android Studio.app/sdk/extras/android/m2repository/groupId/artifact1Id/artifact1version/artifact1Id-artifact1Version.apklib 
+1

종속성을 해결할 리포지토리가 없습니다. 'buildscript'섹션에서 선언 된 저장소는 프로젝트 평가 단계에만 적용됩니다 (플러그인 가져 오기, 스크립트 적용 등). 그것들은 빌드 단계 자체에 적용되지 않습니다. – noamt

+0

글쎄, 실제로 사용하는 저장소를 선언하는 artifactory {} 섹션이 아닙니까? 아마도 나는 혼란 스럽습니다 ... – user1860579

+0

예, 찾고있는 이슈는 아마도 libs-snapshots 저장소를 통해 접근 할 수 없을 것입니다. – noamt

답변

0

는 @noamt는 유일한 것은 잘못이 실제로 Artifactory와의 연결을 허용하는 저장소 {} 섹션을 선언하지 않은 사실이었다 말했듯이. 나는 이것이 artifactory {} 섹션에 의해 직접적으로 다루어지지 않는 이유가 조금 혼란 스럽지만 적어도 지금은 작동 중이다.

+0

귀하의 문제를 어떻게 해결했는지 자세히 설명해주십시오. 나는 그것을 정말로 얻지 않았다 :/ –

+0

글쎄, 실제로는 완전히 해결되지 않았다. artifactory {} 섹션을 작동시키지 못했기 때문에 모든 항목을 단순히 maven 저장소 (저장소)의 간단한 선언 { maven { url "http://192.168.2.130:8081/artifactory/simple/libs-release "}} '와 (과) 호환됩니다. – user1860579

0

당신이 두 배 ": artifact2Id artifact2Version가의 groupId"는 것을 확인했다을? 또는 실수로 문자열 대신 여기에 변수를 사용합니까?

환호, 르네

+0

예, 확실히 (실제로 여러 번) 확인했습니다. 나는 그 문제가 다른 곳에서있을 것이라고 확신한다. Artifactory contextUrl을 잘못된 URL로 변경하면 artifactory에 도달했는지 확신 할 수 없기 때문에 정확한 오류 메시지가 표시됩니다. – user1860579

0

나는 기본적으로 Gradle을가 안드로이드 sdk 저장소를 집어 것으로 나타났습니다 :

C:\Users\YOUR_USER\android-sdks\extras\android\m2repository 

대신에 :

C:\Users\YOUR_USER\.m2\repository 

하는 유물을 찾고 때하지만 나중에 다운로드 할 때. 비교를 수행하고 두 번째로 다운로드 중인지 확인하십시오.

+0

나는 당신을 따라갈지는 모르지만 실제로는 어떤 디렉토리에도 다운로드가 없다. 로컬 아티팩트 (Android Studio SDK에서 정확함)를 분명히 검색하지만 아직 다운로드되지 않았습니다. 이것이 나를 당황하게하는 것입니다. – user1860579