2016-08-06 2 views
1

나는 벅 gen_rule 사용에 문제가있다.컴파일 절차에 포함되지 않은 genrule로 생성 된 Java 파일

gradle 빌드 프로세스 중에 Java 소스 파일을 생성 할 수있는 SqlDelightBin이라는 실행 가능한 jar 파일이 있습니다.이 jar 파일을 실행할 gradle 작업이 있으며 생성 된 Java 파일을 올바르게 컴파일 할 수 있습니다.

하지만이 gen_rule이 제대로 실행되지만 sqllight_devDebug라는 이름의이 jar 파일을 내 android_library의 deps 목록에 추가하면 생성 된 Java 파일은이 컴파일 라운드에서 컴파일되지 않으므로 생성 된 클래스 찾을 수 없습니다. 다시 빌드 명령을 실행하면 성공합니다.

내 gen_rule은 다음과 같습니다

genrule(
    name = 'sqldelight_devDebug', 
    srcs = glob([ 
     'src/*/sqldelight/**/*.sq', 
    ]), 
    out = 'out', 
    bash = 'java -jar /Users/piasy/src/OkBuck/.okbuck/cache/c61171f7a8bee5d459102d49daecb0b6/SqlDelightBin-0.4.3.jar $SRCDIR /Users/piasy/src/OkBuck/app/build/okbuck/sqldelight && echo $SRCS > $OUT', 
) 

그것은 우리가 $OUT 파일로를 생성, /Users/piasy/src/OkBuck/app/build/okbuck/sqldelight 디렉토리에 Java 파일에 src/*/sqldelight/에서 SQL 파일을 컴파일하는 jar 파일을 실행하고 BUCK이 genrule의 성공을 생각하게하는 SQL 파일 목록.

내 android_library이다 : 당신이 소스로 sqldelight_devDebug 대상에 의해 생성 된 파일을 사용하려면, 다음과 같이 srcs에 그 목표 이름을 추가

android_library(
    name = 'src_devDebug', 
    srcs = glob([ 
     'src/main/java/**/*.java', 
     'build/okbuck/sqldelight/**/*.java’, # the generated Java files 
     'src/dev/java/**/*.java', 
    ]), 
    # other params 
    deps = [ 
     # other deps 
     ':sqldelight_devDebug', 
    ], 
    visibility = [ 
     'PUBLIC', 
    ], 
) 

답변

3

:

android_library(
    name = 'src_devDebug', 
    srcs = [ 
     ':sqldelight_devDebug', 
    ] + glob([ 
     'src/main/java/**/*.java', 
     'src/dev/java/**/*.java', 
    ]), 
    # other params 
    deps = [ 
     # other deps 
    ], 
    visibility = [ 
     'PUBLIC', 
    ], 
) 
+1

하지 일부로 그래 브의 "glob" 나는 그게 집어 들지 않을 것이라고 확신합니다. 'glob'의 결과에 추가하고 싶을 것이다. – sdwilsh

+0

'srcs = [ ': sqldelight_devDebug'] + glob ([ 'src/main/java/**/*. java', 'src/dev/java/**/*. java']),' 내 genrule의 bash를'bash = 'java -jar /Users/piasy/src/OkBuck/.okbuck/cache/c61171f7a8bee5d459102d49daecb0b6/SqlDelightBin-0.4.3.jar $ SRCDIR/Users/piasy/src/OkBuck/app/build로 바꾼다./okbuck/sqldelight> $ OUT ',', 생성 된 Java 파일 목록을'$ OUT'으로 출력한다.'buck build'를 실행 한 후에'__src_devDebug__srcs' 파일은'$ OUT' 파일 경로의 한 줄을 가지지 만 생성 된 클래스를 찾을 수 없으면 컴파일이 계속 실패합니다. 새로 추가 된 행을'@ $ OUT'으로해야 재귀 적으로 볼 수 있습니까? – Piasy

+0

하지만 어떻게해야할지 모르겠다. 도와 줘서 고마워! @sdwilsh – Piasy