mike-neckのブログ

Java or Groovy or Swift or Golang

Gradle Kotlin DSL を用いたプロジェクトでmavenにpublishするときの注意

f:id:mike_neck:20171113232305p:plain

gradle kotlin-dsl のサンプル「hello-kotlin」を真似て、kotlin stdlib のdependencyを記述すると、invalidなpomが生成されてしまう。

dependencies {
    api(kotlin("stdlib-jre8"))
}

生成されるpom.xml

<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-stdlib-jre8</artifactId>
</dependency>

version がないので、この pom.xml は invalid。


正しくは DependencyHandler.kotlin extension function の引数 version もちゃんと指定する

dependencies {
    api(kotlin("stdlib-jre8", "1.1.51"))
}

または、

dependencies {
    api(kotlin(module = "stdlib-jre8", version = "1.1.51"))
}

これにより、valid な pom.xml が生成される

<dependency>
    <groupId>org.jetbrains.kotlin</groupId>
    <artifactId>kotlin-stdlib-jre8</artifactId>
    <version>1.1.51</version>
</dependency>