2016-09-11 5 views
0

이 질문은 특정 문제를 해결함으로써 부분적으로 대답 할 수 있지만 일반적인 문제를 해결할 수도 있습니다.Gradle buildscript 종속성을 찾지 못했습니다.

특정 문제

나는 Gradle 코드에 명령 줄 옵션을 전달해야합니다. Gradle은 그것을 할 수있는 합리적인 방법이 없으므로 어쨌든 System 속성에서 추출하고 나중에 구문 분석해야합니다. 나는 이것을 위해 org.apache.common.cli 패키지를 사용하려고 노력했다. 하지만 빌드 코드로 가져올 수는 없습니다.

이는 것처럼 보이는 것을 대략입니다 : 내가 잘못이나 방법이 문제를 디버깅하는 방법 무슨 일이 있었는지 전혀 모르는

* What went wrong: 
Could not compile build file 'somewhere/build.gradle'. 
> startup failed: 
    build file 'somewhere/build.gradle': 35: unable to resolve class org.apache.commons.cli.DefaultParser 
    @ line 35, column 1. 
    import org.apache.commons.cli.DefaultParser 

:

buildscript { 
    repositories { ... } 
    dependencies { 
     classpath group: "commons-cli", name: "commons-cli", version: "1.2" 
    } 
} 
... 
org.apache.commons.cli.DefaultParser 

그리고이납니다. 나는 또한 Groovy의 groovy.util.CliBuilder을 시도했지만, 더 많은 비밀스러운 오류가 발생합니다.

즉각적인 문제를 해결하려면 : 저는 Gradle 빌드에 전달 된 명령 줄 인수를 구문 분석하는 간단한 방법을 찾은 것을 기쁘게 생각합니다.

일반 문제

Gradle을 코드를 디버깅 할 수있는 방법이 있나요? 디버깅을 통해 명령 행 옵션에 --debug 인수를 추가하는 것을 의미하지는 않습니다. 그것은 단지 무의미한 무의미한 내용을 인쇄하지만, 무엇을하려고했는지 그리고 무엇이 잘못되었는지 알려주지 않습니다. 나는 실제 디버거와 같은 것을 의미한다.

로드하려고 시도한 종속성을 알 수있는 방법이 있습니까?로드 할 때 종속성을 알 수 있습니까? 그렇다면로드 할 때 어디에서로드 했습니까?

"Gradle language"를 linter/editor s.t.로 분석 할 수있는 방법으로 번역 할 수있는 방법이 있습니까? 하나는 그것의 어떤 부분을 알고/어떤 종류의 다른 부분을 추가하는 것이 합리적이라면 (unmet 의존성과 같은 문제를 쉽게 이해할 수 있도록하는 일종의 인텔리 센스입니다)?

+0

명령 줄 매개 변수를 전달하는 합리적인 방법이 없다는 것은 무엇을 의미합니까? '-P' 옵션을 사용해 보셨습니까? 참조 : https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_properties_and_system_properties – RaGe

+0

@RaGe (a) 이것은 명령 행 구문 분석을 수행하는 라이브러리와 비교하면 절름발이입니다 (추가 할 수 있기를 원함). 명령 줄 옵션에 대한 설명, 옵션 그룹 지정, 인수가 형식에 맞지 않으면 오류 자동 생성) (b) 기본 수준에서는 사용할 수 없습니다 (이 오류는 정의하지 않으면 오류입니다. 해당 프로젝트 속성, 정의 범위에서 클래스에 액세스 할 수 없음). – wvxvw

+0

'gradle tasks'를 실행할 때 도움이되는 타입을 의미합니까? 이 문제가 [XY 문제] (http://xyproblem.info/)의 경우가 아니라는 것을 배제하기 위해 명령 줄 인수를 구문 분석하여 수행하려는 작업을 설명 할 수 있습니까? – RaGe

답변

1

이 게시물은 몇 가지 질문을하고 있으며 매우 주관적입니다 ("재치있는 방법이 없습니다"). 나는 할 수있는 일을 할 것입니다.

첫째, buildscript의 전성 검사로의 아파치 커먼즈 Lang3을 해보자 :

import org.apache.commons.lang3.StringUtils 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath group: 'org.apache.commons', name: 'commons-lang3', version: '3.4' 
    } 
} 

println "TRACER : " + StringUtils.class.simpleName 

위의 스크립트가 작동

,하지만 Gradle을 2.14.1로, 나는 아파치 코 몬즈 CLI 1.3.1에서 해당 DefaultParser을 확인할 수 있습니다 (제쳐두고, 그것은 v 1.2에 없습니다) 작동하지 않습니다. 나는 이것이 this bug과 관련이 있다고 생각합니다. 링크는 dom4j을 언급하지만 cli은 같은 카테고리에 속해있을 수 있습니다.

명령 줄 인수와 관련하여, Gradle 설명서에는 -P, -D, gradle.properties 등의 예제가 포함되어 있습니다. 특정 구문 분석 문제가있는 경우 구체적인 질문이있는 새 질문을 만드십시오.

대하여 의존성이 다음 명령은 유용 할 수

gradle dependencies 
gradle buildEnvironment 

가 후자 this post 참조.

+0

다행히도, 이것이 작동하는지 여부는 알 수 없습니다. 그러나 후손과 미래에이 문제가 발생할 사람들을 위해 : "종속성"블록에 쓸 유효한 단어가 무엇인지 어떻게 알 수 있습니까? "apache-commons"또는 다른 변형이 아닌 "org.apapche.commons"를 어떻게 알았습니까? 이 모든 것들의 의미는 무엇입니까? 매뉴얼에는 이것에 대해 아무런 언급이 없으며, 무작위 예제 만 제공됩니다. 무작위 예제는 게시 된 달과 표면에없는 다른 요소에 따라 크게 다릅니다. – wvxvw

+1

Maven 좌표에 익숙하다고 가정해도 Gradle 문서에서이 내용을 다룹니다. JVM에 대한 경험 부족으로 Gradle을 부당하게 비난하고 있습니다. 아파치 커먼즈 Lang3의 의존성 스펙은이 링크에서 왔습니다. (Gradle 탭 참고) - https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.4 –

+0

나는이 질문을 닫기 위해 투표했습니다. 정말 불분명하다. –

관련 문제