相关疑难解决方法(0)

并行启动多个Gradle"spring-boot"插件"bootRun"任务

我有一个使用Gradle构建的多项目Spring Boot应用程序.我正在尝试做的是从命令行subprojects使用Spring Boot的bootRun任务来运行各种各样的"ad-hoc"测试gradle bootRun.但是,似乎每个守护进程按顺序启动和停止.有没有办法让我的所有Boot守护进程使用spring-boot插件并行运行?

任何建议将不胜感激 :)

java spring gradle spring-boot

15
推荐指数
1
解决办法
4104
查看次数

使用gradle run启动应用程序时,java.util.scanner会抛出NoSuchElementException

我创建了一个简单的java"echo"应用程序,它接受用户的输入并将其显示给他们以演示该问题.我可以使用IntelliJ的内部"运行"命令,以及执行由...生成的编译的java文件时运行此应用程序gradle build.但是,如果我尝试使用执行应用程序gradle run,我会从扫描程序中抛出NoSuchElementException.

我认为gradle或应用程序插件特别对系统IO做了一些奇怪的事情.

应用

package org.gradle.example.simple;

import java.util.Scanner;

public class HelloWorld {
  public static void main(String args[]) {
    Scanner input = new Scanner(System.in);
    String response = input.nextLine();
    System.out.println(response);
  }
}
Run Code Online (Sandbox Code Playgroud)

的build.gradle

apply plugin: 'java'
version '1.0-SNAPSHOT'

apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class': 'org.gradle.example.simple.HelloWorld'
    }
}

apply plugin: 'application'

mainClassName = "org.gradle.example.simple.HelloWorld"

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}
Run Code Online (Sandbox Code Playgroud)

有关如何使用此应用程序的任何想法gradle run

java stdin gradle java.util.scanner build.gradle

10
推荐指数
1
解决办法
2376
查看次数

Gradle:使用项目类路径执行Groovy交互式shell

我有一个由几个子项目组成的Gradle项目.我刚刚创建了一个新的,以添加对我想要运行的交互式Groovy shell的支持:

gradle console
Run Code Online (Sandbox Code Playgroud)

要么

gradle console:run
Run Code Online (Sandbox Code Playgroud)

所以我的新console模块的build.gradle文件如下:

apply plugin: 'groovy'
apply plugin:'application'

mainClassName = 'org.codehaus.groovy.tools.shell.Main'

dependencies {
  compile 'org.codehaus.groovy:groovy-all:2.2.2'
  compile 'org.fusesource.jansi:jansi:1.11'
  compile 'commons-cli:commons-cli:1.2'
  compile 'jline:jline:2.11'
  compile project(':my-module')
}

task(console, dependsOn: 'classes', type: JavaExec) {
  main = 'org.codehaus.groovy.tools.shell.Main'
  classpath = sourceSets.main.runtimeClasspath
}
Run Code Online (Sandbox Code Playgroud)

但是,当我跑步gradle :console:run或者gradle console得到类似的东西时:

:console:run
Groovy Shell (2.2.2, JVM: 1.6.0_45)
Type 'help' or '\h' for help.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000> 
BUILD SUCCESSFUL

Total time: 4.529 secs
giovanni@mylaptop:~/Projects/my-project$
Run Code Online (Sandbox Code Playgroud)

因此,交互式shell似乎已经开始,但它会立即退出.

难道我做错了什么?

编辑:在build.gradle文件中添加以下内容:

run.standardInput = System.in
Run Code Online (Sandbox Code Playgroud)

现在,从输入流中读取标准输入(由于注释). …

java shell groovy gradle

9
推荐指数
1
解决办法
6041
查看次数

接受用户输入以通过 Gradle 运行 junit 测试

我有一个 junit 测试,它需要用户确认先决条件状态,因此在测试进行之前会提示用户。这是用于涉及无法模拟的外部系统的集成测试。这在通过 Eclipse IDE 运行测试时工作正常,但不能通过 Gradle 运行。

我知道这是因为 Gradle 设置了一个空的标准输入。这可以根据以下问题针对运行目标解决:带有 Java 和 gradle 的控制台应用程序。但是,我一直无法为测试目标找到等效的解决方案。

有没有办法接收用户输入以通过 Gradle 运行 junit 测试?

下面给出了我正在使用的测试类的简化版本:

@Test
public void testDigitalRead()
{
    Scanner in = new Scanner(System.in);

    out.println("Press enter to continue.");
    in.nextLine();
    // perform testing logic

    in.close();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在通过 Gradle 运行时将抛出 java.util.NoSuchElementException ,因为没有要读取的输入。

java junit gradle

5
推荐指数
0
解决办法
190
查看次数

无法让 Gradle 使用 System.in

这个问题解释了如何System.in在运行任务时使用来运行项目中的特定类。

但对我来说,目前它不起作用:尽管我已将application插件和以下几行包含在build.gradle

mainClassName = "misc.StreamsExp"
run{ 
    standardInput = System.in 
}
task stream( type: JavaExec, dependsOn: assemble ){
    classpath sourceSets.main.runtimeClasspath
    main = "misc.StreamsExp"
}
Run Code Online (Sandbox Code Playgroud)

下面的应用程序代码中的行readLine应该是阻塞的,但事实并非如此:

BufferedReader br = new BufferedReader(new InputStreamReader( System.in ));

String enteredLine = "";
while( enteredLine == null || ! enteredLine.equals( "q" )){
    System.out.println( "spuds");
    enteredLine = br.readLine();
}
Run Code Online (Sandbox Code Playgroud)

...相反,事情会永远旋转:

土豆土豆
土豆
土豆
...

注意,我使用的是 Windows 10 操作系统,带有 Java 8.91。我尝试过 Windows DOS 控制台和 Cygwin。
NB2 当我在 Eclipse(Gradle STS Eclipse …

inputstream system.in blocking gradle

1
推荐指数
1
解决办法
2753
查看次数