Использование gradle для создания очень простой Java-программы - PullRequest
0 голосов
/ 23 мая 2018

Я новичок в Java и Gradle, и у меня очень новый вопрос.У меня есть следующий Java-файл:

public class TestMain {
    public static void main(String[] args) {
        System.out.println("Hello.....");
    }
}

Я могу скомпилировать указанный выше файл, используя javac, и запустить его с помощью команды "java TestMain".

Я сейчас пытаюсь сделатьто же самое с использованием Gradle build Framework.Я выполнил следующие шаги: запустив "gradle init --type java-library, скопировал вышеуказанный файл в src / main / java /

Когда я запускаю" ./gradlew build ", я получаю файл TestMain.class, а также "building-java-file.jar" (весь каталог gradle находится в каталоге building-java-file).

$ ls -l build/classes/main/TestMain.class 
-rw-r--r--  1 user1  foo\eng  610 May 22 17:22 build/classes/main/TestMain.class

$ java  build/classes/main/TestMain
Error: Could not find or load main class build.classes.main.TestMain

Как запустить TestMain.class? Кроме того, чтоявляется причиной для создания файла jar gradle - building-java-file.jar?

Кстати, мой файл build.gradle довольно пустой.

apply plugin: 'java'

repositories {
    jcenter()
}

dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile 'org.slf4j:slf4j-api:1.7.21'

    testCompile 'junit:junit:4.12'
}

Спасибо, Ахмед. '

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Ответы на мой вопрос четко объяснены на сайте документации Gradele.

По сути, начните с: gradle init --type java-application

Ссылка: https://guides.gradle.org/building-java-applications/?_ga=2.79084180.165016772.1527029076-64181247.1527029076

0 голосов
/ 23 мая 2018

Использовать JavaExec.В качестве примера поместите следующее в build.gradle

task execute(type:JavaExec) {
   main = mainClass
   classpath = sourceSets.main.runtimeClasspath
}

Для запуска gradle -PmainClass = Boo execute.Вы получаете

$ gradle -PmainClass=Boo execute
:compileJava
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes
:execute
I am BOOMMMM!

mainClass - это свойство, которое передается динамически в командной строке.classpath настроен на получение последних классов.

Если вы не передадите свойство mainClass, произойдет сбой, как и ожидалось.

$ gradle execute

FAILURE: Build failed with an exception.

* Where:
Build file 'xxxx/build.gradle' line: 4

* What went wrong:
A problem occurred evaluating root project 'Foo'.
> Could not find property 'mainClass' on task ':execute'.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...