IT story

Java 클래스를 실행하기위한 Gradle (build.gradle을 수정하지 않고)

hot-time 2020. 7. 30. 09:49
반응형

Java 클래스를 실행하기위한 Gradle (build.gradle을 수정하지 않고)


간단한 이클립스 플러그인 Gradle을 실행하는 바로 사용이 발사 Gradle을에 줄 방법을 명령 있음.

Maven 컴파일 및 실행을위한 Gradle 아날로그 란? mvn compile exec:java -Dexec.mainClass=example.Example

이런 식으로 모든 프로젝트를 gradle.build실행할 수 있습니다.

업데이트 : 비슷한 질문이있었습니다 .Java 앱을 실행하기위한 maven의 exec 플러그인과 동등한 gradle은 무엇입니까? 이전에 요청했지만 솔루션은 모든 프로젝트를 변경하도록 제안했습니다.build.gradle

package runclass;

public class RunClass {
    public static void main(String[] args) {
        System.out.println("app is running!");
    }
}

그런 다음 실행 gradle run -DmainClass=runclass.RunClass

:run FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':run'.
> No main class specified   

사용하십시오 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 BOO!

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'.

의견에서 업데이트 :

mvn exec:javagradle 에는 동등한 것이 없으므로 응용 프로그램 플러그인을 적용하거나 JavaExec 작업이 있어야합니다.


Gradle Application 플러그인 을 사용해야합니다 .

apply plugin:'application'
mainClassName = "org.gradle.sample.Main"

그리고 간단히 gradle run.

Teresa가 지적했듯이 mainClassName시스템 속성으로 구성 하고 명령 줄 인수로 실행할 수도 있습니다 .


First Zero의 대답을 확장하면 gradle build오류없이 실행할 수있는 것을 원한다고 생각 합니다.

모두 gradle buildgradle -PmainClass=foo runApp이와 작업 :

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

    main = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "package.MyDefaultMain"
}

기본 메인 클래스를 설정합니다.

참고 URL : https://stackoverflow.com/questions/21358466/gradle-to-execute-java-class-without-modifying-build-gradle

반응형