Как реализовать задачу «запуск приложения» в Gradle? - PullRequest
1 голос
/ 14 февраля 2020

Я использую Gradle, и мне интересно, как я могу реализовать задачу запуска, чтобы я мог запустить программу из команды "./gradlew run". У меня есть проект с именем «демо», и у него есть задача «запуск приложения». Затем я создал проект «HouseObserver», и у него нет задачи «запуск приложения».

enter image description here

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

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'
}

repositories {
    // Use jcenter for resolving dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

apply plugin: 'java'

task runApp(type: JavaExec) {
  classpath = sourceSets.main.runtimeClasspath

  main = 'HouseObserver.Main'
}

// Using and creating an Executable Jar
jar {
  manifest {
    attributes('Main-Class': 'HouseObserver.Main')
  }
}

task runExecutableJar(type: JavaExec) {
  // Executable jars can have only _one_ jar on the classpath.
  classpath = files(tasks.jar)

  // 'main' does not need to be specified

}



dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:28.0-jre'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'

    // Need at least basic JME
    compile "org.jmonkeyengine:jme3-core:3.3.0-beta1"
    compile "org.jmonkeyengine:jme3-desktop:3.3.0-beta1"
    compile "org.jmonkeyengine:jme3-lwjgl3:3.3.0-beta1"

    compile group: 'com.simsilica', name: 'lemur', version: '1.13.0'
    compile group: 'com.simsilica', name: 'lemur-proto', version: '1.11.0'

    // needed for the style language
    runtime "org.codehaus.groovy:groovy-all:2.4.5"

    // Standard utility stuff
    compile 'com.google.guava:guava:19.0'
    compile 'org.slf4j:slf4j-api:1.7.13'
    runtime 'org.apache.logging.log4j:log4j-slf4j-impl:2.5'
    runtime 'org.apache.logging.log4j:log4j-core:2.5'

}

Я также пытаюсь реализовать задачу с помощью плагина.

plugins {
    id 'application'
}

application {
    mainClassName = 'my.packages.to.the.Main'
}

Но ничего не происходит. Почему?

РЕДАКТИРОВАТЬ:

Вот мой последний файл Gradle.

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'
    id 'application'
}

application {
    mainClassName = 'HouseObserver.Main'
}

repositories {
    // Use jcenter for resolving dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:28.0-jre'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'

    // Need at least basic JME
    compile "org.jmonkeyengine:jme3-core:3.3.0-beta1"
    compile "org.jmonkeyengine:jme3-desktop:3.3.0-beta1"
    compile "org.jmonkeyengine:jme3-lwjgl3:3.3.0-beta1"

    compile group: 'com.simsilica', name: 'lemur', version: '1.13.0'
    compile group: 'com.simsilica', name: 'lemur-proto', version: '1.11.0'

    // needed for the style language
    runtime "org.codehaus.groovy:groovy-all:2.4.5"

    // Standard utility stuff
    compile 'com.google.guava:guava:19.0'
    compile 'org.slf4j:slf4j-api:1.7.13'
    runtime 'org.apache.logging.log4j:log4j-slf4j-impl:2.5'
    runtime 'org.apache.logging.log4j:log4j-core:2.5'

}
...