Почему этот скрипт сборки gradle не компилирует класс Java?

Я пытаюсь использовать Cascading в своем проекте Hadoop. Я пытаюсь реализовать первый пример, приведенный в Enterprise Data Workflows with Cascading книге. Я написал класс java, который содержит код, связанный с Cascading, и у меня есть еще один файл build.graddle, который должен скомпилировать этот класс java и создать из него файл jar.

Моя структура папок выглядит следующим образом:

  • главная_папка

    • нетерпеливый

      • Main.java
      • build.gradle

Мой файл build.gradle выглядит следующим образом:

apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'

archivesBaseName = 'impatient'
repositories {
    mavenLocal()
    mavenCentral()
    mavenRepo name: 'conjars', url: 'http://conjars.org/repo/'
}
ext.cascadingVersion = '2.1.0'
dependencies {
    compile( group: 'cascading', name: 'cascading-core', version: cascadingVersion )
    compile( group: 'cascading', name: 'cascading-hadoop', version: cascadingVersion )
}
jar {
    description = "Assembles a Hadoop ready jar file"
    doFirst {
        into( 'lib' ) {
            from configurations.compile
        }
    }
    manifest {
        attributes( "Main-Class": "impatient/Main" )
    }
}

Когда я запускаю команду gradle clean jar из командной строки, я получаю сообщение об успешной сборке. Я попытался запустить этот файл jar, используя

hadoop jar impatient.jar <input file path> <output file path>

команда, но затем она дает мне исключение Exception in thread "main" java.lang.ClassNotFoundException: impatient.Main.

Итак, я проверил содержимое файла jar и обнаружил, что этот jar не содержит impatient/Main.class файла.

Обратите внимание, что я ничего не знаю о gradle.

Попросите кого-нибудь сказать мне, если что-то не так со сценарием gradle или я делаю какую-то ошибку.

Спасибо !!!


person Shekhar    schedule 11.09.2013    source источник
comment
Я не уверен здесь, но я думаю, что Main-Class: нетерпеливый.Main — это путь, или даже mainClassName = нетерпеливый.Main. Проверьте gradle.org/docs/current/userguide/application_plugin.html.   -  person marko    schedule 11.09.2013


Ответы (1)


Переместите исходный файл в

main_folder/impatient/src/main/java/Main.java

но оставьте файл build.gradle там, где он есть.

По умолчанию Gradle использует src/main/java и src/test/java для поиска производственных и тестовых источников Java (относительно корневой папки, которая в вашем случае impatient)

person Nikita Skvortsov    schedule 13.09.2013