我正在尝试将Gradle(1.4)添加到具有多个测试套件的现有项目中.位于src/test/java成功运行的标准单元测试,但是我无法设置任务来运行位于的JUnit测试src/integration-test/java.
当我运行时,gradle intTest我得到几个cannot find symbol类的错误src/main.这让我相信依赖关系没有正确设置.如何设置intTest以便它将运行我的JUnit集成测试?
的build.gradle
apply plugin: 'java'
sourceCompatibility = JavaVersion.VERSION_1_6
sourceSets {
integration {
java {
srcDir 'src/integration-test/java'
}
resources {
srcDir 'src/integration-test/resources'
}
}
}
dependencies {
compile(group: 'org.springframework', name: 'spring', version: '3.0.7')
testCompile(group: 'junit', name: 'junit', version: '4.+')
testCompile(group: 'org.hamcrest', name: 'hamcrest-all', version: '1.+')
testCompile(group: 'org.mockito', name: 'mockito-all', version: '1.+')
testCompile(group: 'org.springframework', name: 'spring-test', version: '3.0.7.RELEASE')
integrationCompile(group: 'junit', name: 'junit', version: '4.+')
integrationCompile(group: 'org.hamcrest', …Run Code Online (Sandbox Code Playgroud) 我一直trait在科特林的例子中找到.例如,这个答案使用trait.
trait关键字是否在Kotlin中使用?如果是,我在哪里可以找到它的信息,如果不是,那么它在某些时候是语言规范的一部分吗?
我的目标是在idea任务运行时向控制台打印一条消息,但不幸的是,只要运行任何内容,就会打印消息.为什么在idea没有运行任务时执行打印行?如何仅在idea执行任务时显示消息?
的build.gradle
apply plugin: 'idea'
task hello << {
println 'Hello world!'
}
tasks.idea() {
println '*********************************************************'
println '* You should open build.gradle as a native project from *'
println '* within IntelliJ. *'
println '*********************************************************'
}
Run Code Online (Sandbox Code Playgroud)
输出命令 gradle hello
*********************************************************
* You should open build.gradle as a native project from *
* within IntelliJ. *
*********************************************************
:hello
Hello world!
BUILD SUCCESSFUL
Total time: 2.846 secs
Run Code Online (Sandbox Code Playgroud)
工作方案
tasks.getByPath('idea') << {
println '*********************************************************'
println '* …Run Code Online (Sandbox Code Playgroud) 我想删除Android Studio/IntelliJ中的右边距线.我在下图中指出了有问题的一行.
我搜索Android工作室设置并多次搜索Google ..但我找不到任何东西.
如何删除该行?

在Gradle中,如何生成具有动态依赖关系的POM文件,该文件已解析为使用的实际版本?
dependencies {
testCompile(group: 'junit', name: 'junit', version: '4.+')
}
Run Code Online (Sandbox Code Playgroud)
这是从上面的依赖项生成的.
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.+</version>
<scope>test</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我希望将其+解析为如下的应计版本.
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
关于Maven Publishing的Gradle指南章节谈到了这样做,但没有提到如何做.
使用此挂钩,您可以修改POM的任何方面.例如,您可以使用用于生成构建的实际版本替换依赖项的版本范围.
使用Peter Niederwieser的答案中的信息,我创建了一个任务,该任务读取包含动态依赖关系的POM,并使用已解析依赖关系的新pom覆盖它.
/**
* Reads and Overwrites POM file resolving dynamic dependencies
*/
task cleanPom(dependsOn: writeNewPom) << {
// Get existing pom file
Node xml = new XmlParser().parse(pomFileLocation)
// Generate map of resolved versions
Map resolvedVersionMap = new HashMap()
Set<ResolvedArtifact> resolvedArtifacts = configurations.compile.getResolvedConfiguration().getResolvedArtifacts()
resolvedArtifacts.addAll(configurations.testCompile.getResolvedConfiguration().getResolvedArtifacts()) …Run Code Online (Sandbox Code Playgroud) IntelliJ如何知道目录是"源"还是"测试源"?如何将目录标记为"测试源"?
build.gradle 1
apply plugin: 'java'
apply plugin: 'idea'
idea {
module {
sourceDirs += file('src/main/java')
testSourceDirs += file('src/awesome-test/java')
}
}
Run Code Online (Sandbox Code Playgroud)
使用"build.gradle 1"文件,src/awesome-test/java标记为"测试源".
build.gradle 2
apply plugin: 'java'
apply plugin: 'idea'
idea {
module {
sourceDirs += file('src/main/java')
testSourceDirs += file('src/awesome-test/java')
}
}
sourceSets {
'awesome-test' {
java {
srcDir 'src/awesome-test/java'
}
compileClasspath += sourceSets.main.runtimeClasspath
}
}
Run Code Online (Sandbox Code Playgroud)
但是,只要添加引用此目录的源集("build.gradle 2"),就会src/awesome-test/java将其标记为"源".
build.gradle 3
apply plugin: 'java'
apply plugin: 'idea'
idea {
module {
sourceDirs += file('src/main/java')
testSourceDirs += …Run Code Online (Sandbox Code Playgroud) 有没有办法使用Java客户端获取Elasticsearch中的索引列表?我已经能够找到使用Marvel/Sense执行此操作的示例,但我似乎无法找到使用Java客户端执行此操作的任何示例.
我有一个需要收听多个不同主题的应用程序; 每个主题都有关于如何处理消息的单独逻辑.我曾想过为每个KafkaStreams实例使用相同的kafka属性,但是我得到的错误如下所示.
错误
java.lang.IllegalArgumentException: Assigned partition my-topic-1 for non-subscribed topic regex pattern; subscription pattern is my-other-topic
Run Code Online (Sandbox Code Playgroud)
代码(kotlin)
class KafkaSetup() {
companion object {
private val LOG = LoggerFactory.getLogger(this::class.java)
}
fun getProperties(): Properties {
val properties = Properties()
properties.put(StreamsConfig.APPLICATION_ID_CONFIG, "my-app")
return properties
}
private fun listenOnMyTopic() {
val kStreamBuilder = KStreamBuilder()
val kStream: KStream<String, String> = kStreamBuilder.stream("my-topic")
kStream.foreach { key, value -> LOG.info("do stuff") }
val kafkaStreams = KafkaStreams(kStreamBuilder, getProperties())
kafkaStreams.start()
}
private fun listenOnMyOtherTopic() {
val kStreamBuilder = KStreamBuilder() …Run Code Online (Sandbox Code Playgroud) 我可以实例化一个在Kotlin中使用递归泛型的具体Java类,如果是,那么如何?
细节
我试图实例化一个使用递归泛型的Java类,类似于下面的例子.我找到了一个解决方法,将Java类包装在一个新类中,但感觉就像我正在回避一个我应该能够直接处理的问题.
具有递归泛型的Java类
public class MyLegacyClass<T extends MyLegacyClass<T>> {
// implementation ...
}
Run Code Online (Sandbox Code Playgroud)
它是如何在Java中实例化的
// In Java we just ignore the generic type...
MyLegacyClass myLegacyClass = new MyLegacyClass();
Run Code Online (Sandbox Code Playgroud)
尝试在Kotlin中实例化失败
class myClass {
// Error: One type argument expected for class...
val x: MyLegacyClass = MyLegacyClass()
// Still 'Error: One type argument expected for class..' You start to see the problem here.
val y: MyLegacyClass<MyLegacyClass<MyLegacyClass<MyLegacyClass>>> = MyLegacyClass()
}
Run Code Online (Sandbox Code Playgroud)
Kotlin解决方法
class MyLegacyClassWrapper : MyLegacyClass<MyLegacyClassWrapper>()
class myClass {
val x: MyLegacyClass<MyLegacyClassWrapper> = …Run Code Online (Sandbox Code Playgroud) java ×5
gradle ×4
kotlin ×2
alias ×1
android ×1
apache-kafka ×1
dependencies ×1
generics ×1
git ×1
intellij-14 ×1
interop ×1
junit ×1
maven ×1
pom.xml ×1
unit-testing ×1