2015-01-18 3 views
4

Я успешно создал очень простой облачный проект в студии android после this example. Кроме того, я добавил поддержку JavaCC для проекта, используя this gradle plugin. Теперь я могу поместить свои * .jj-файлы в папку javacc и скомпилировать их с помощью задачи compileJavacc из студии android. Мой build.gradle файл теперь выглядит следующим образом:Интеграция плагина JavaCC gradle с Android Studio

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 и андроида новичок студии, я не знаю, как продолжить следующее:

  1. Добавили файлы, созданные JavaCC для моей сборки path
  2. Выполнение задачи компиляции JavaCC выполняется автоматически при изменении файлов * .jj.

Как я могу решить эти две вещи самым элегантным способом?

Спасибо!

+0

Означает ли это, в частности, участие в студии Android, как вы думаете? Если нет, этот вопрос может получить больше воздействия, если вы упростите заголовок на что-то вроде «Скомпилировать зависимость компиляции и путь сборки с помощью плагина JavaCC с моим проектом Gradle». –

+0

Lennart, вы смогли решить # 1? Если да, то как? – Y2i

+0

Извините, что я отказался от проекта, над которым я работал. Оказалось, что существуют и другие более зловещие причины, по которым динамическая компиляция и запуск Java-кода из GAE невозможна. –

ответ

1

Обращаясь к одной и той же проблеме и экспериментируя с различными решениями, я выбрал тот, который показан ниже.

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

txors alotzors. Я буду отмечать это как правильный ответ, доверяющий вам, что он работает, поскольку у меня больше нет какой-либо установки dev, где JavaCC или Android Studio является частью. –

+0

Спасибо Леннарт. Этот подход работает для меня. Может быть, есть лучшие способы сделать это, но я буду придерживаться этого на данный момент. – Y2i