Existe um plugin Eclipse simples para executar o Gradle, que usa apenas a linha de comando para iniciar o gradle.
O que é gradle analog para maven compilar e executar
mvn compile exec:java -Dexec.mainClass=example.Example
Desta forma, qualquer projeto com gradle.build
pode ser executado.
ATUALIZAÇÃO: houve uma pergunta semelhante: Qual é o equivalente do Gradle do plug-in exec do maven para executar aplicativos Java? perguntado antes, mas a solução sugeriu alterar todos os projetosbuild.gradle
package runclass;
public class RunClass {
public static void main(String[] args) {
System.out.println("app is running!");
}
}
Em seguida, executando 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
Respostas:
Não há equivalente direto
mvn exec:java
no gradle, você precisa aplicar oapplication
plugin ou ter umaJavaExec
tarefa.application
plugarAtive o plugin:
Configure-o da seguinte maneira:
Na linha de comando, escreva
JavaExec
tarefaDefina uma tarefa, digamos
execute
:Para correr, escreva
gradle -PmainClass=Boo execute
. Você conseguemainClass
é uma propriedade passada dinamicamente na linha de comando.classpath
está definido para pegar as últimas classes.Se você não passar na
mainClass
propriedade, ambas as abordagens falharão conforme o esperado.fonte
build.gradle
, oclasspath
está codificado para pegar as classes java de seu classpath de origembuild.gradle
java . Mesmo quando você executamvn exec:java
o classpath é configurado para coletar os arquivos de origem java no diretório maven atual. NaJavaExec
tarefa, fiz o mesmo. Altere oclasspath
para sua fonte java e o caminho da classe mudará automaticamente. Não hámvn exec:java
equivalente emgradle
você precisar aplicar oapplication
plugin ou ter umaJavaExec
tarefa.task execute(...
build.gradle, todas as outras tarefas falham com a mesma mensagem de erro, informando que o gradle espera que mainClass seja transmitido. Não consigo limpar ou construir.main = mainClass
pormain = getProperty("mainClass")
e ele não gritará mais com você.gradle build
, veja minha resposta abaixo.Você só precisa usar o plug - in do aplicativo Gradle :
E então simplesmente
gradle run
.Como Teresa aponta, você também pode configurar
mainClassName
como uma propriedade do sistema e executar com um argumento de linha de comando.fonte
build.graldle
. Mas eu tenho um projeto com várias classes util, cada uma com o método principal.System.getProperty("mainClass")
, 3) o código-fonte está onde deveria estar de acordo com a convenção, 4) tudo funciona quando você colocaRunClass
no arquivo de compilação?build.gradle
tivermainClassName = "runclass.RunClass"
. O parâmetro-DmainClass
não tem efeito:gradle run -DmainClass=runclass.RunClass2
executa a classe principal embutida em código.ext.mainClass = project.hasProperty('mainClass') ? project.getProperty('mainClass') : 'org.gradle.sample.Main' ; apply plugin:'application' ; mainClassName = ext.mainClass
Agora, quando você fizergradle -PmainClass=Foo run
isso, deve usarFoo
como classe principal.Expandindo a resposta do First Zero, acho que você quer algo onde também possa executar
gradle build
sem erros.Ambos
gradle build
egradle -PmainClass=foo runApp
trabalhar com isso:onde você define sua classe principal padrão.
fonte
plugins { application }; application { mainClassName = if (project.hasProperty("mainClass")) project.properties.get("mainClass").toString() else "Foo" }
Scanner
para lernextLine()
. Alguma ideia de uma solução para isso? Continue obtendo "nenhuma linha encontrada" ao executar o runApp.Você pode parametrizá-lo e passar o gradle clean build -Pprokey = goodbye
fonte