そもそも、fatJarって?

サードパーティー製のライブラリなどを使った時に、そのライブラリも含み、全てを1つのjarファイルにしたもの(だと思っている)。

今回の環境

1つ目
・IntelliJ IDEA CommunityEdition 2016.3.4
・Forge 1.7.10-10.13.4.1614
・Forge Gradle 1.2

2つ目
・IntelliJ IDEA CommunityEdition 2016.3.4
・Forge 1.11.2-13.20.1.2386
・Forge Gradle 2.2-SNAPSHOT

どうやるの?

  1. build.gradleを開く
  2. 以下のソースを追加(もし、minecraft{}などが既にあった場合、そこに追記する形で)
  3. buildタスクを実行したらfatJarの完成!

※<>は書かないでください。
また、minecraft,configrations,dependencies,jarの順番はこのままでお願いします。
下記コードで「ここから」と「ここまで」の間は1.11.2の環境では消してください。

//ここから
minecraft {
    srgExtra "PK: <そのライブラリのルートディレクトリ> <jarファイルにした時のパス>"
}
//ここまで

configurations{
    shade
    compile.extendsFrom shade
}

dependencies {
    <compileをshadeに変更、詳しくは下で>
}

jar {
    configurations.shade.each {dep ->
        from(project.zipTree(dep)){
            exclude 'META-INF', 'META-INF/**'
        }
    }
}

使用例(必要な部分のみ)

//ここから
minecraft {
    srgExtra "PK: com/fasterxml/jackson/annotation com/fasterxml/jackson/annotation"
    srgExtra "PK: com/fasterxml/jackson/core com/fasterxml/jackson/core"
    srgExtra "PK: com/fasterxml/jackson/databind com/fasterxml/jackson/databind"
}
//ここまで

configurations{
    shade
    compile.extendsFrom shade
}

dependencies {
    shade group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.0'
}

jar {
    configurations.shade.each {dep ->
        from(project.zipTree(dep)){
            exclude 'META-INF', 'META-INF/**'
        }
    }
}
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.