2015-01-18 3 views
4

this example 다음의 Android 스튜디오에서 매우 기본적인 클라우드 프로젝트를 성공적으로 설정했습니다. 또한 this gradle plugin을 사용하여 프로젝트에 JavaCC 지원을 추가했습니다. 이제 * .jj 파일을 javacc 폴더에 넣고 android studio 내에서 compileJavacc 작업을 사용하여 컴파일 할 수 있습니다. 내 build.gradle 파일은 이제 다음과 같습니다Android Studio와 JavaCC gradle plugin 통합

는 JavaCC에 의해 생성 된 파일 내 빌드에 추가 한
  1. :

    buildscript { 
        repositories { 
         mavenCentral() 
        } 
        dependencies { 
         classpath 'com.google.appengine:gradle-appengine-plugin:1.9.14' 
         classpath "ca.coglinc:javacc-gradle-plugin:2.0.4" 
        } 
    
    } 
    
    repositories { 
        mavenCentral(); 
    } 
    
    apply plugin: 'java' 
    apply plugin: 'war' 
    apply plugin: 'appengine' 
    apply plugin: "ca.coglinc.javacc" 
    
    sourceCompatibility = JavaVersion.VERSION_1_7 
    targetCompatibility = JavaVersion.VERSION_1_7 
    
    dependencies { 
        appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.14' 
        compile 'javax.servlet:servlet-api:2.5' 
    } 
    
    appengine { 
        downloadSdk = true 
        appcfg { 
         oauth2 = true 
        } 
    } 
    

    가 Gradle을하고 안드로이드 스튜디오 초보자이기 때문에, 나는 다음을 계속하는 방법을 잘 모르겠습니다 경로

  2. * .jj 파일이 변경되면 JavaCC 컴파일 작업이 자동으로 실행됩니다.

가장 우아한 방식으로 어떻게이 두 가지를 해결할 수 있습니까?

감사합니다.

+0

Android Studio와 관련이 있습니까? 그렇지 않다면이 질문은 제목을 단순화하여 '내 Gradle 프로젝트로 JavaCC 플러그인을 사용하여 빌드 빌드 의존성 및 빌드 경로' –

+0

Lennart와 같은 제목을 단순화하면 더 많은 노출을 얻게 될 것입니다. # 1 해결할 수 있었습니까? 그렇다면 어떻게? – Y2i

+0

유감스럽게도, 제가 일하고있는 프로젝트를 포기했습니다. GAE에서 Java 코드를 동적으로 컴파일하고 실행하는 것이 왜 불가능했는지에 대한 다른 더 불길한 이유가있었습니다. –

답변

1

정확하게 똑같은 문제에 직면하고 다양한 솔루션을 실험하면서 아래에 표시된 것을 선택했습니다.

android { 
    // ... 
    sourceSets { 
     main { 
      java.srcDirs = ['src/main/java', 'build/generated/javacc'] 
     } 
    } 
    applicationVariants.all { variant -> 
     variant.javaCompile.dependsOn.add(compileJavacc) 
    } 
    // ... 
} 
+0

txors alotzors. 내가 JavaCC 나 Android Studio가있는 곳에서 dev 설정을하지 않았기 때문에이 질문이 올바른 답이라고 표시 할 것입니다. –

+0

감사합니다. Lennart. 이 접근 방식은 나를 위해 작동합니다. 이 작업을 수행하는 더 좋은 방법이 있을지 모르지만, 지금 당장이 작업을 계속 할 것입니다. – Y2i

관련 문제