小编gue*_*ter的帖子

如何使用gradle kotlin-dsl添加新的sourceset

我想添加一个sourceset src/gen/java.使用groovy这很容易,并已在https://discuss.gradle.org/t/how-to-use-gradle-with-generated-sources/9401/5中进行了描述

sourceSets {
   gen {
        java.srcDir "src/gen/java"
    }
}
Run Code Online (Sandbox Code Playgroud)

但我坚持使用kotlin-dsl添加一个新的.我所拥有的只是:

java {
    sourceSets {

    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮到这里

gradle kotlin gradle-kotlin-dsl

14
推荐指数
6
解决办法
5614
查看次数

Apache Cassandra:使用同一个表中其他列的值更新值

我有一个有几列的大桌子.其中一列是created_at时间戳.现在我想添加一个名为的新列last_activated.该列最初应填充值created_at.

起初我只是改变了表来添加新列 - >没有问题,但我尝试过

UPDATE my_table SET last_activated = created_at;
Run Code Online (Sandbox Code Playgroud)

是什么导致了以下问题:

SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] message="line 1:54 no viable alternative at input ';' (update catalog_item set last_activated_at = [created_at];)">
Run Code Online (Sandbox Code Playgroud)

这有点可能吗?

我正在使用cassandra 3.5.

cassandra

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

如何使用Gradle Kotlin-dsl添加新配置

使用gradle-groovy,可以使用以下命令创建新配置:

configurations {
    explode
}

dependencies {
    explode (group: 'org.apache.samza', name: 'samza-shell', ext: 'tgz', classifier: 'dist', version: "$SAMZA_VERSION")
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何用kotlin-dsl做到这一点。我试过了:

val explode by configurations

dependencies {
    explode(group = "org.apache.samza", name = "samza-shell",  ext = "tgz", classifier = "dist", version = samzaVersion)
    // "explode"(group = "org.apache.samza", name = "samza-shell",  ext = "tgz", classifier = "dist", version = samzaVersion)
}
Run Code Online (Sandbox Code Playgroud)

但没有成功。有任何想法吗?

gradle gradle-kotlin-dsl

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

为什么Java ArrayList与Kotlins List接口兼容

为什么这样做

val foo: kotlin.collections.List<String> = java.util.ArrayList()
Run Code Online (Sandbox Code Playgroud)

ArrayList不是继承Kotlin List,是吗?

kotlin

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

Ktor 会话 Cookie 身份验证

我想使用会话 cookie 与 Ktor 进行身份验证,到目前为止我所拥有的是:

private const val SEVER_PORT = 8082
private const val SESSION_COOKIE_NAME = "some-cookie-name"

data class AuthSession(
    val authToken: String
)

fun main() {
    embeddedServer(Netty, port = SEVER_PORT, module = Application::basicAuthApplication).start(wait = true)
}

fun Application.basicAuthApplication() {
    install(Sessions) {
        cookie<AuthSession>(SESSION_COOKIE_NAME, SessionStorageMemory()) {
            cookie.path = "/"
        }
    }
    install(DefaultHeaders)
    install(CallLogging)
    install(Authentication) {
        session<AuthSession> {
            validate { session ->
                // TODO: do the actual validation
                null
            }
        }
    }

    routing {
        authenticate {
            get("/") {
                call.respondText("Success")
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

kotlin ktor

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

使用 Gradle 构建带有 Kotlin-DSL 依赖项的 jar

这个问题已经有了答案:如何将所有依赖项包含在一个 jar 文件中,尽管它是针对 Groovy 的

我正在使用 gradlekotlin-dsl并且代码不兼容。我尝试使用几种方法使其工作,包括:

tasks.withType<Jar> {
    configurations["compileClasspath"].forEach { file: File ->
        copy {
            from(zipTree(file.absoluteFile))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这不起作用。那么如何kotlin-dsl在 gradle 中包含依赖呢?

gradle kotlin gradle-kotlin-dsl

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

用 gradle 分析 ssl 错误(-Djavax.net.debug=ssl 似乎不被尊重)

我不想调查解决 maven 依赖项时发生的 SSL 错误。以我的天真,我认为这会奏效。

export GRADLE_OPTS=-Djavax.net.debug=ssl
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。根本没有 SSL 输出。还附加

--debug
Run Code Online (Sandbox Code Playgroud)

没有帮助。那么如何打开 SSL 日志呢?

ssl gradle

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

Kotlin Coroutines超时

我正在编写一个测试函数,它应该运行一个块或(当达到某个超时时)抛出一个异常.

Coroutines在Kotlin 尝试这个,但结果是CoroutinesCompletableFuture:

fun <T> runBlockWithTimeout(maxTimeout: Long, block: () -> T ): T {
    val future = CompletableFuture<T>()

    // runs the coroutine
    launch { block() }

    return future.get(maxTimeout, TimeUnit.MILLISECONDS)
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我不确定这是否是解决kotlin问题的预期方法.

我也尝试过其他方法:

runBlocking {
    withTimeout(maxTimeout) {
        block()
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不会像block电话那样迅速起作用Thread.sleep(...)

所以是CompletableFuture办法要走的路还是有一点的吗?

更新1 我想要实现的目标:

异步集成 - 测试代码(如从RabbitMq接收数据)应该以这样的方式测试:

var rabbitResults: List = ... // are filled async via RabbitListeners
...
waitMax(1000).toSucceed {
    assertThat(rabbitResults).hasSize(1)
}
waitMax(1000).toSucceed {
    assertThat(nextQueue).hasSize(3)
}
...
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines

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

Git 快进合并与 git Reset --hard 相同

关于 git 的这个说法是否正确,a (可以快进)基本上与将 a合并到分支的 HEADmerge相同?git reset --hard

(当merge不是快进时,很明显这个说法不成立)

git

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

sha256 摘要仅适用于 &amp;*

当我使用板条箱创建 sha256 sum 时sha256,有一种旧的已弃用方法digest_bytes(有效),并且弃用还建议使用新digest函数。当我使用新函数作为替换时,会出现错误,编译器会建议一个非常奇怪但有效的解决方案。

fn main() {
    let bytes: Vec<u8> = std::fs::read("./Cargo.toml").unwrap();
    let hash: String = sha256::digest_bytes(&bytes); // deprecated but works
    // let hash: String = sha256::digest(&bytes); // does not work
    // let hash: String = sha256::digest(&*bytes); // works, but why
    println!("{}", hash);
}
Run Code Online (Sandbox Code Playgroud)

sha256::digest(&bytes);这是我使用该行时的错误

  --> src/main.rs:3:31
   |
3  |     let hash = sha256::digest(&bytes);
   |                -------------- ^^^^^^ the trait `Sha256Digest` is not implemented for `&Vec<u8>`
   |                |
   |                required by a bound introduced …
Run Code Online (Sandbox Code Playgroud)

rust

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

使用 tokio::spawn 和 Box&lt;dyn Error&gt; 时如何修复“无法在线程之间安全发送”?

这个简单的程序会产生编译器错误:

#[tokio::main]
async fn main() {
    tokio::spawn(async {
        foo().await;
    });
}

async fn foo() {
    let f1 = bar();
    let f2 = bar();

    tokio::join!(f1, f2);
}

async fn bar() -> Result<(), Box<dyn std::error::Error>> {
    println!("Hello world");
    Ok(())
}
Run Code Online (Sandbox Code Playgroud)
error[E0277]: `(dyn std::error::Error + 'static)` cannot be sent between threads safely
   --> src/main.rs:5:18
    |
5   |       tokio::spawn(async {
    |  _____------------_^
    | |     |
    | |     required by a bound introduced by this call
6   | |         foo().await;
7   | |     });
    | …
Run Code Online (Sandbox Code Playgroud)

thread-safety rust trait-objects rust-tokio

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

使用 gradle kotlin-dsl 覆盖 spring boot 依赖版本

SpringBoot 带有许多依赖项以及它们的默认版本。在 groovy-gradle 中,这样的依赖版本可以被覆盖:

ext['mockito.version'] = '1.7.5'
Run Code Online (Sandbox Code Playgroud)

但这对 kotlin-dsl 不起作用。我试过:

val mockito by extra { "2.12.0" }
val mockito.version by extra { "2.12.0" }
val `mockito.version` by extra { "2.12.0" }
Run Code Online (Sandbox Code Playgroud)

后两个,不要编译,第一个,不起作用。

如何在 kotlin 文件中覆盖版本(如果可能的话,我不想创建单独的属性文件)。

gradle kotlin gradle-kotlin-dsl

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