web-dev-qa-db-ja.com

実装依存関係を持つGradleで実行可能なファットjarを作成するにはどうすればよいですか

Gradle 4.6に簡単なプロジェクトがあり、その実行可能jarを作成したいと思います。 shadowgradle-fatjar-plugingradle-one-jarspring-boot-gradle-pluginプラグインを試しましたが、どちらもimplementationとして宣言された依存関係を追加しません(compileがありません)。 compileで動作します。 gradle-one-jarプラグインの場合、implementation依存関係が必要です。

どうもありがとうございました!

27

次のコードを使用できます。

jar {
    manifest {
        attributes(
                'Main-Class': 'com.package.YourClass'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
 }

com.package.YourClassstatic void main( String args[] )を含む完全修飾クラス名に置き換えてください。

これにより、ランタイムの依存関係がパックされます。詳細が必要な場合は、 docs を確認してください。

35
miskender

同じタスクを Gradle Kotlin DSL を使用して同様の方法で達成できます。

val jar by tasks.getting(Jar::class) {
    manifest {
        attributes["Main-Class"] = "com.package.YourClass"
    }

    from(configurations.runtime.map { if (it.isDirectory) it else zipTree(it) })
}
2
SerCe